¿Alguien puede ayudar con una forma eficaz y segura de eliminar las cotizaciones de las variables de lote?
He escrito un archivo por lotes que importa con éxito una lista de parámetros% 1,% 2,% 3, etc. y los coloca en variables con nombre. Algunos de estos parámetros contienen varias palabras y, por lo tanto, se incluyen entre comillas dobles.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Estas% variables se colocan a continuación en variables con nombre:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
La verificación de las variables se realiza mediante eco.
echo.% FirstName%
echo.% LastName%
echo.% ShipAddr%
los resultados se muestran como
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
Necesito eliminar las comillas incluidas en las variables seleccionadas. Por ejemplo, FirstName y LastName se utilizan en otros lugares y no deben incluir comillas.
En un archivo por lotes de prueba, logré eliminar las comillas usando el carácter ~ tilde en las variables.
> set FirstName=%~1
> set LastName=%~2
Pensé que tenía la solución, pero pronto experimenté un comportamiento inusual con la ejecución de archivos por lotes. De repente, CMD no reconoce declaraciones de largo recorrido. Ejecución normal del archivo por lotes desde la ruta completa
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
devoluciones
> 'C:\Documents' is not recognized as an internal or external command....
Por tanto, parece que la adición del carácter ~ tilde a las variables% 1% 2 ...% n entrantes ha provocado algún cambio. ¿Posiblemente se hayan alterado algunas variables de entorno?
También intenté borrar las comillas desde dentro de la variable con varios intentos usando el comando FOR. Eso parece incómodo y no he podido aprender cómo lograr esto creando una lista de variables para realizar la tarea:
algo como esto:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
Creo que tengo dos problemas.
1) Mi idea 'breve y dulce' de insertar ~ tilde en las variables% 1% 2 entrantes (% ~ 1, etc.) parece haber afectado algunas configuraciones y alterado la forma en que CMD navega por los nombres de ruta largos.
2) Todavía estoy buscando una forma limpia y fácil de eliminar las comillas de las variables nombradas seleccionadas.
Cualquier ayuda para los más experimentados será muy apreciada. Estoy al final de mis habilidades aquí ... ¡necesito orientación, por favor!
editar 26/12/2009 13:36 PST archivo por lotes completo:
Blockquote
:: dataout.bat
:: revisión 12/25/2009 agregue ~ tilde a las variables% entrantes para eliminar las comillas "incrustadas.
:: escribe la lista de direcciones utilizando parámetros de línea de comando
:: escribe la lista de salida de datos para la importación de QBooks IIF
:: escribe Datos de pedido de comerciante para RUI
:: cadena de línea de comando de muestra para la prueba
:: listmail [nombre] [apellido] ["cadena de dirección"] ["cadena de ciudad"] [estado] [zip] [N.º de pedido] [PurchDate] [Nombre de registro] ["FirstName LastName"] [TransactionID] [PaymentMethod] [Total] [ProductID] [Qty] [Price_Each] [PackPrep] [Shipping] [CommissionPmt] [Invoice #]
:: ejemplo: salida de datos Bellewinkle Moose "123 Green Forest Way" "Vancouver" WA 98664 1004968 05/25/2009 "Bellewinkle Moose" "Olive Oyl" 101738 "On Account" 20.67 FK-1P 1 8.95 3.00 1.39 239
@echo off
cls
c:
cd \
cd documentos y configuración \ administrador \ mis documentos \ txt \
procesamiento de eco por
lotes % 1% 2 : VARISET
::Convierta% n parámetros de línea de comando en variables de cadena
set ($ FirstName) =% ~ 1
set ($ LastName) =% ~ 2
set ($ BillingAddress1) =% ~ 3
set ($ BillingCity) =% ~ 4
set ($ BillingState) =% ~ 5
conjunto ($ BillingPostal) =% ~ 6
conjunto ($ OrderNumber) =% ~ 7
conjunto ($ Purch_Date) =% ~ 8
conjunto ($ RegistrationName) =% ~ 9
conjunto de turnos ($ TransactionID) =% ~ 9 conjunto de
turnos
($ PaymentMethod) =% ~ 9 conjunto de
turnos
($ Total) =% ~ 9
conjunto de turnos ($ ProductIdentifier) =% ~ 9 conjunto de
turnos
($ Cantidad) =% ~ 9 conjunto de
turnos
($ Price_Each) =% ~ 9 conjunto de
turnos
($ Pack_Prep) =% ~ 9 conjunto de
turnos
($ Envío) =% ~ 9 conjunto de
turnos
($ ServiceFee) =% ~ 9 conjunto de
turnos
($ Descuento) =% ~ 9
shift
set ($ Invoice) =% ~ 9
shift
set ($ UnitPrice) =% ~ 9
set _ShipCombName =% ($ FirstName) %% ($ LastName )%
echo el nombre del combo de envío es% _ShipCombName%
pause
:: escribir variables de cadena en el archivo de registro
echo FN% ($ FirstName)% LN% ($ LastName)% BA% ($ BillingAddress1)%% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)%% ($ OrderNumber)%% ($ Purch_Date)%% ($ RegistrationName)%% ($ TransactionID)%% ($ PaymentMethod)%% ($ Total)%% ($ ProductIdentifier)%% ($ Cantidad)%% ($ Price_Each) %% ($ Pack_Prep)%% ($ Envío)%% ($ ServiceFee)%% ($ Discount)%% ($ Invoice)%% ($ UnitPrice)%% _ShipCombName% >> d_out_log.txt
:: Asignar cuenta por Proveedor de servicios
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _QBAcct = Amazon.com
:: 12-25-2009 agregado el segundo método de Amazon pm't para la versatilidad
IF / i% ($ PaymentMethod)% == Amazon SET _QBAcct = Amazon.com
IF / i% ($ PaymentMethod)% == MAST SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == MasterCard SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == Visa SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == PayPal SET _QBAcct = PayPalPmts
IF / i% ($ PaymentMethod)% == En la cuenta SET _QBAcct =% ($ RegistrationName)%
IF / i% ($ PaymentMethod)% == Mail SET _QBAcct =% ($ RegistrationName)%
IF / i% ( $ PaymentMethod)% == AMER SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == DISC SET _QBAcct = Auth / Net
:: Asignar el designador de representante basado en QBAccount
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _Rep = Amazon
:: 12-25-2009 agregado el segundo método de Amazon pm't para la versatilidad
IF / i% ($ PaymentMethod)% == Amazon SET _Rep = Amazon
IF / i% ($ PaymentMethod)% == MAST SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == MasterCard SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == Visa SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == PayPal SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == En cuenta SET _Rep = RB
IF / i% ($ PaymentMethod)% == Mail SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: buscar datos de direcciones duplicados
findtr / i / s "% _ShipCombName%" addrlist.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: ADDRWRITE
if errorlevel 0 goto: ADDRFOUND
: ADDRWRITE
echo% _ShipCombName% >> addrlist.txt
echo% ($ BillingAddress1)% >> addrlist.txt
echo% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)% >> addrlist.txt
echo. >> addrlist.txt
Archivo de dirección de eco Escrito
: ADDRFOUND El
representante de eco seleccionado es% _Rep% El
eco de la cuenta seleccionada es:% _QBAcct%
pause
:: RUI OUT
:: escribir ID de pedido de comerciante y ID de pedido de RUI en RUI
:: comprobar datos de RUI duplicados en writeRUI.txt
cd ..
cd RegKOut
find / i "% ($ OrderNumber)%" writeRUI.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: RUIWRITE
if errorlevel 0 goto: IIFWRITE
: RUIWRITE
echo% ($ Invoice)% % ($ OrderNumber)% >> writeRUI.txt
:: end write RUI
:: IIF OUT
: IIFWRITE
:: Compruebe si hay datos de facturas duplicados en writeIIF.txt
find / i "% ($ OrderNumber)%" writeIIF.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: HEADWRITE
if errorlevel 0 goto: LINEWRITE
: HEADWRITE
:: write Encabezado, Envío / Manejo, descuento, Representante y datos de comisión al QB IIF archivo de importación
echo% ($ OrderNumber)%% ($ Purch_Date)% Factura% ($ TransactionID)%% _QBAcct% Cuentas por cobrar% ($ Total)%% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
echo SHP% ($ Envío)% 1? >> writeIIF.txt
echo DISC% ($ Descuento)% 1? >> writeIIF.txt
echo Comm% ($ ServiceFee)% 1? >> writeIIF.txt
: LINEWRITE
IF / i% ($ ProductIdentifier)% equ PH-1 goto WRITE_DEFA ELSE goto WRITE_DISC
echo% ($ ProductIdentifier)%
: WRITE_DISC
:: escribe precios con descuento analizados de la variable personalizada:
echo% ($ ProductIdentifier) %% ($ Price_Each)%% ($ Cantidad)%? >> writeIIF.txt
goto: EOF
: WRITE_DEFA
: escribe los precios predeterminados analizados de los datos del producto
echo% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ Cantidad)%? >> writeIIF.txt
goto: EOF
:: retraso de 3 segundos
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF