Alguém pode ajudar com uma maneira eficaz e segura de remover cotações de variáveis de lote?
Eu escrevi um arquivo em lote que importa com sucesso uma lista de parâmetros% 1,% 2,% 3 etc. e os coloca em variáveis nomeadas. Alguns desses parâmetros contêm várias palavras e, portanto, estão entre aspas duplas.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Essas% variáveis são colocadas em seguida nas variáveis nomeadas:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
a verificação das variáveis é feita por echo.
echo.% FirstName%
echo.% LastName%
echo.% ShipAddr%
resultados exibidos como
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
Preciso eliminar as cotações incluídas nas variáveis selecionadas. Por exemplo, FirstName e LastName são usados em outro lugar e não devem incluir aspas.
Em um arquivo de lote de teste, consegui eliminar as aspas usando o caractere ~ til nas variáveis.
> set FirstName=%~1
> set LastName=%~2
Achei que tinha a solução, mas logo experimentei um comportamento incomum com a execução de arquivos em lote. De repente, o CMD deixa de reconhecer as declarações de longo caminho. Execução normal de arquivo em lote do caminho completo
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
retorna
> 'C:\Documents' is not recognized as an internal or external command....
Portanto, parece que a adição do caractere ~ tilde às variáveis% 1% 2 ...% n de entrada causou alguma mudança. Possivelmente algumas variáveis de ambiente foram alteradas?
Também tentei limpar aspas de dentro da variável com várias tentativas usando o comando FOR. Isso parece estranho e não consegui aprender como fazer isso criando uma lista de variáveis para realizar a tarefa:
algo assim:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
Acho que tenho dois problemas.
1) Minha ideia 'curta e doce' de inserir ~ til nas variáveis de entrada% 1% 2 (% ~ 1, etc) parece ter afetado algumas configurações e alterado como o CMD navega por nomes de caminho longos.
2) Ainda estou em busca de uma maneira limpa e fácil de eliminar aspas de variáveis nomeadas selecionadas.
Qualquer ajuda para os mais experientes seria muito apreciada. Estou no fim das minhas habilidades aqui ... preciso de uma orientação por favor!
editar arquivo de lote inteiro de 26/12/2009 13:36 PST:
Blockquote
:: dataout.bat
:: revisão 25/12/2009 adiciona ~ til às variáveis% de entrada para eliminar "aspas embutidas.
:: grava a lista de endereços usando parâmetros de linha de comando
:: grava a lista de saída de dados para QBooks IIF import
:: grava Dados do pedido do comerciante para RUI
:: amostra de string de linha de comando para teste
:: listmail [nome] [sobrenome] ["string de endereço"] ["string de cidade"] [estado] [zip] [Pedido #] [PurchDate] [Regname] ["FirstName LastName"] [TransactionID] [PaymentMethod] [Total] [ProductID] [Qty] [Price_Each] [PackPrep] [Shipping] [CommissionPmt] [Invoice #]
:: exemplo: 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:
cd \
cd documentos e configurações \ administrador \ meus documentos \ txt \ batchtest
processamento de eco% 1% 2
: VARISET
::Converter% n parâmetros de linha de comando em variáveis de string
definidas ($ FirstName) =% ~ 1
conjunto ($ LastName) =% ~ 2
conjunto ($ BillingAddress1) =% ~ 3
conjunto ($ BillingCity) =% ~ 4
conjunto ($ BillingState) =% ~ 5
set ($ BillingPostal) =% ~ 6
set ($ OrderNumber) =% ~ 7
set ($ Purch_Date) =% ~ 8
set ($ RegistrationName) =% ~ 9
conjunto de turnos ($ TransactionID) = conjunto de
turnos % ~ 9
($ PaymentMethod) = conjunto de
turnos % ~ 9
($ Total) =
conjunto de turnos % ~ 9 ($ ProductIdentifier) = conjunto de
turnos % ~ 9
($ Quantity) =% ~ 9 conjunto de
turnos
($ Price_Each) = conjunto de
turnos % ~ 9
($ Pack_Prep) = conjunto de
turnos % ~ 9
($ Shipping) = conjunto de
turnos % ~ 9
($ ServiceFee) = conjunto de
turnos % ~ 9
($ Desconto) =% ~ 9
shift
set ($ Invoice) =% ~ 9
shift
set ($ UnitPrice) =% ~ 9
set _ShipCombName =% ($ FirstName)%% ($ LastName)%
echo ship combo name is% _ShipCombName%
pause
:: escrever string varibables no arquivo de log
echo FN% ($ FirstName)% LN% ($ LastName)% BA% ($ BillingAddress1)%% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)%% ($ OrderNumber)%% ($ Purch_Date)%% ($ RegistrationName)%% ($ TransactionID)%% ($ PaymentMethod)%% ($ Total)%% ($ ProductIdentifier)%% ($ Quantity)%% ($ Price_Each) %% ($ Pack_Prep)%% ($ Shipping)%% ($ ServiceFee)%% ($ Discount)%% ($ Invoice)%% ($ UnitPrice)%% _ShipCombName% >> d_out_log.txt
:: Atribuir conta por Provedor de serviços
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _QBAcct = Amazon.com
:: 12-25-2009 adicionado segundo método Amazon pm't para versatilidade
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)% == Na conta 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
:: Atribuir designador de representante baseado em QBAccount
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _Rep = Amazon
:: 12-25-2009 adicionado segundo método Amazon pm't para versatilidade
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)% == Na conta SET _Rep = RB
IF / i% ($ PaymentMethod)% == Mail SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: verificar se há dados de endereço duplicados
findstr / i / s "% _ShipCombName%" addrlist.txt
echo errorlevel:% errorlevel%
se errorlevel 1 goto: ADDRWRITE
se errorlevel 0 goto: ADDRFOUND
: ADDRWRITE
echo% _ShipCombName% >> addrlist.txt
echo% ($ BillingAddress1)% >> addrlist.txt
echo% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)% >> addrlist.txt
echo. >> addrlist.txt
echo Address File Written
: ADDRFOUND
echo selected rep is% _Rep%
echo account selected is:% _QBAcct%
pause
:: RUI OUT
:: Write Merchant Order ID & RUI Order ID to RUI
:: Check for duplicate RUI data em writeRUI.txt
cd ..
cd RegKOut
find / i "% ($ OrderNumber)%" writeRUI.txt
echo errorlevel:% errorlevel%
se errorlevel % if errorlevel 1 goto: RUIWRITE
if errorlevel 0 goto: IIFWRITE
: RUIWRITE
echo% ($ Invoice)% % ($ OrderNumber)% >> writeRUI.txt
:: end write RUI
:: IIF OUT
: IIFWRITE
:: Verifique se há dados de fatura duplicados em writeIIF.txt
find / i "% ($ OrderNumber)%" writeIIF.txt
echo errorlevel:% errorlevel%
se errorlevel 1 goto: HEADWRITE
se errorlevel 0 goto: LINEWRITE
: HEADWRITE
:: write Dados de cabeçalho, envio / manuseio, desconto, Rep & comissão para arquivo de importação QB IIF
echo% ($ OrderNumber)%% ($ Purch_Date)% Invoice% ($ TransactionID)%% _QBAcct% Contas a Receber% ($ Total)% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
echo SHP% ($ Shipping)% 1? >> writeIIF.txt
echo DISC% ($ Desconto)% 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
:: grava preços com desconto analisados a partir da variável personalizada:
echo% ($ ProductIdentifier) %% ($ Price_Each)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
: WRITE_DEFA
: grava os preços padrão analisados a partir dos dados do produto
echo% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
:: 3 segundos de atraso
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF