¿Alguien puede ayudar con una forma efectiva y segura de eliminar las citas de las variables de los lotes?
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 múltiples palabras, y por lo tanto están entre comillas.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Estas %variables se colocan a continuación en variables nombradas:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
La verificación de las variables se hace por eco.
eco.%NombreDePrimeraVez%
eco.%Apellido%
eco.%ShipAddr%
los resultados se muestran como
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
Necesito eliminar las citas incluidas en las variables seleccionadas. Por ejemplo, Nombre y Apellido se usan en otro lugar y no deben incluir comillas.
En un archivo de prueba por lotes tuve éxito en la eliminación de las citas 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 las declaraciones de camino largo. La ejecución normal de un archivo por lotes de la ruta completa
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
retornos
> 'C:\Documents' is not recognized as an internal or external command....
Así que parece que la adición del carácter ~tilde a las variables %1 %2...%n entrantes ha causado algún cambio. Posiblemente algunas variables de entorno han sido alteradas...
También intenté borrar las citas dentro de la variable con varios intentos usando el comando FOR. Eso parece incómodo y no he podido aprender cómo lograrlo 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 "corta y dulce" idea de insertar ~tilde en las variables entrantes %1 %2 (%~1, etc.) parece haber afectado algunos ajustes y alterado la forma en que CMD navega por los caminos largos.
2) Sigo buscando una forma limpia y fácil de eliminar las citas de las variables seleccionadas.
Cualquier ayuda para los más experimentados sería muy apreciada. Estoy al final de mis habilidades aquí... ¡necesito algo de orientación por favor!
editar 12/26/2009 13:36 PST todo el archivo del lote:
- Cita textual
- : dataout.bat
- : revisión 25/12/2009 añadir ~tilde a las %variables entrantes para eliminar las "comillas" incrustadas.
- : escribe la lista de direcciones usando los parámetros de la línea de comandos
- : escribe la lista de salida de datos para la importación de QBooks IIF
- : escribe los datos de la Orden Mercantil para la RUI
- : cadena de comandos de muestra para la prueba
- : listmail[nombre][apellido]["cadena de dirección"]["cadena de ciudad"][estado][zip][Pedido#][Fecha de compra][Nombre]["Nombre Apellido"][TransacciónID][Método de pago][Total][ProductID][Cantidad][Precio_Cada uno][Preparar el paquete] [Envío] [ComisiónPmt] [Factura#]
- : ejemplo: dataout 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:
cdc.
documentos y ajustes del cd \administrator\my documentos \txt\batchtest
procesamiento del eco %1 %2- VARISET
- : Convierte los parámetros de la línea de comando %n en variables de cadena set ($NombreDeSobrino)=%~1
set ($Apellido)=%~2
set ($BillingAddress1)=%~3
set ($BillingCity)=%~4
set ($BillingState)=%~5
set ($BillingPostal)=%~6
set ($OrderNumber)=%~7
set ($Purch_Date)=%~8
set ($RegistrationName)=%~9
turno
set ($TransactionID)=%~9
turno
set ($PaymentMethod)=%~9
turno
set ($Total)=%~9
turno set ($ProductIdentifier)=%~9
turno
set ($Quantity)=%~9
turno
set ($Price_Each)=%~9
turno
set ($Pack_Prep)=%~9
turno
set ($Shipping)=%~9
turno
set ($ServiceFee)=%~9
turno
set ($Descuento)=%~9
turno
set ($Factura)=%~9
turno
set ($UnitPrice)=%~9
set _ShipCombName=%($NombreDeNombre)% %($Apellido)%
El nombre del combo de la nave eco es %_Nombre del Combo de la Nave%
pausa- : escribir cadenas varibables para el archivo de registro echo FN %($NombreDePrimera) % LN %($Apellido) % BA %($DirecciónDeFacturación1) % %($CiudadDeFacturación) % %($EstadoDeFacturación) % %($FacturaciónPostal) % %($NúmeroDeOrden) % %($FechaDeCompra) % %($NombreDeRegistro) % %($TransacciónID) % %($Método de pago)% %($Total)% %($Identificador de producto)% %($Cantidad)% %($Precio_Cada)% %($Preparación_de_paquete)% %($Envío)% %($Tarifa de servicio)% %($Descuento)%($Factura)% %($Precio_de_unidad)% %_Nombre_del_envío% >> d_out_log. txt
- : Asignar cuenta por proveedor de servicios IF /i %($PaymentMethod)%==Amazon Receivables SET _QBAcct=Amazon.com
- : 12-25-2009 añadido segundo método de pm't de Amazon para la versatilidad IF /i %($PaymentMethod)%==Amazonia SET _QBAcct=Amazonia.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 Rep basado en la cuenta QBAccount IF /i %($PaymentMethod)%==Amazon Receivables SET _Rep=Amazon
- : 12-25-2009 añadido segundo método de pm't de Amazon 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 la cuenta SET _Rep=R B
IF /i %($PaymentMethod)%==Mail SET _Rep=R B
IF /i %($PaymentMethod)%==AMER SET _Rep=BlueZap
IF /i %($PaymentMethod)%==DISC SET _Rep=BlueZap- : comprobar si hay datos de dirección duplicados findstr /i /s "%_ShipCombName%" addrlist.txt
nivel de error de eco: %nivel de error%
si el nivel de error 1 va a: ADDRWRITE
si el nivel de error 0 va a :ADDRFOUND- ESCRIBIR echo %_ShipCombName% >> addrlist.txt
eco %($BillingAddress1)% >> addrlist.txt
eco %($BillingCity)% %($BillingState)% %($BillingPostal)% >> addrlist.txt
eco. >> addrlist.txt
Archivo de dirección de eco escrito- ADDRFOUND El eco seleccionado es %_Rep%
La cuenta seleccionada de eco es: %_QBAcct%
pausa- : RUI OUT
- : escribe la identificación de la orden de compra y la identificación de la orden de la RUI a la RUI
- : comprobar si hay datos duplicados de la RUI en writeRUI.txt cd..
cd RegKOut
encontrar /i "%($OrderNumber)%" escribirRUI.txt
nivel de error de eco: %nivel de error%
si el nivel de error 1 va a :RUIWRITE
si el nivel de error 0 va a :IIFWRITE- RUIWRITE eco %($Factura)% %($NúmeroDeOrden)% >> writeRUI.txt
- : fin escribir RUI
- : IIF OUT
- IIFWRITE
- : Compruebe si hay datos de facturas duplicadas en writeIIF.txt encontrar /i "%($OrderNumber)%" escribirIIF.txt
nivel de error de eco: %nivel de error%
si el nivel de error 1 va a :HEADWRITE
si el nivel de error 0 va a :LINEWRITE- CABEZAL
- : escribe el encabezado, el barco/manejo, el descuento, los datos de los representantes y las comisiones en el archivo de importación QB IIF. eco %($Número de orden)% %($Fecha_de_compra)% Factura %($TransactionID)% %_QBAcct% Cuentas por cobrar %($Total)% %_Rep% >> writeIIF.txt
eco H/P %($Pack_Prep)% 1 ? >> writeIIF.txt
eco SHP %($Shipping)% 1 ? >> writeIIF.txt
eco DISCO %($Descuento)% 1 ? >> writeIIF.txt
echo Comm %($ServiceFee)% 1 ? >> writeIIF.txt
LINEA DE ESCRITURA
IF /i %($ProductIdentifier)% equ PH-1 goto WRITE_DEFA ELSE goto WRITE_DISC
eco %($ProductIdentifier)%- WRITE_DISC escribe los precios rebajados de las variables personalizadas:
eco %($ProductIdentifier)% %($Price_Each)% %($Quantity)% ? >> writeIIF.txt
goto :EOF- WRITE_DEFA escribe los precios predeterminados analizados a partir de los datos de los productos
eco %($ProductIdentifier)% %($UnitPrice)% %($Quantity)% ? >> writeIIF.txt
goto :EOF- : 3 segundos de retraso
- : TYPE NUL | CHOICE.COM /N /CY /TY,3 >NUL
- EOF