Qualcuno può aiutare con un modo efficace e sicuro per rimuovere le virgolette dalle variabili batch?
Ho scritto un file batch che importa con successo un elenco di parametri% 1,% 2,% 3 ecc. E li inserisce in variabili denominate. Alcuni di questi parametri contengono più parole e pertanto sono racchiusi tra virgolette doppie.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Queste variabili% vengono poi inserite nelle variabili denominate:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
la verifica delle variabili viene eseguita tramite eco.
echo.% FirstName%
echo.% LastName%
echo.% ShipAddr%
i risultati vengono visualizzati come
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
Devo eliminare le virgolette incluse sulle variabili selezionate. Ad esempio, FirstName e LastName vengono utilizzati altrove e non devono includere virgolette.
In un file batch di prova sono riuscito a eliminare le virgolette utilizzando il carattere ~ tilde nelle variabili.
> set FirstName=%~1
> set LastName=%~2
Pensavo di avere la soluzione, ma presto ho riscontrato un comportamento insolito con l'esecuzione di file batch. Improvvisamente CMD non riconosce le dichiarazioni di percorso lungo. Esecuzione normale del file batch dal percorso completo
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
ritorna
> 'C:\Documents' is not recognized as an internal or external command....
Quindi sembrerebbe che l'aggiunta del carattere ~ tilde alle variabili% 1% 2 ...% n in arrivo abbia causato qualche cambiamento. Forse alcune variabili d'ambiente sono state alterate?
Ho anche provato a cancellare le virgolette dall'interno della variabile con vari tentativi utilizzando il comando FOR. Sembra imbarazzante e non sono stato in grado di imparare come farlo creando un elenco di variabili per eseguire l'attività:
qualcosa come questo:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
Penso di avere due problemi.
1) La mia idea "breve e dolce" di inserire ~ tilde nelle variabili% 1% 2 in arrivo (% ~ 1, ecc.) Sembra aver influenzato alcune impostazioni e modificato il modo in cui CMD naviga nei nomi di percorso lunghi.
2) Sono ancora alla ricerca di un modo semplice e pulito per eliminare le virgolette dalle variabili nominate selezionate.
Qualsiasi aiuto per i più esperti sarebbe molto apprezzato. Sono alla fine delle mie capacità qui ... ho bisogno di una guida per favore!
modifica 26/12/2009 13:36 PST intero file batch:
Blockquote
:: dataout.bat
:: revisione 12/25/2009 aggiunge ~ tilde alle variabili% in arrivo per eliminare le virgolette "incorporate.
:: scrive l'elenco di indirizzi utilizzando i parametri della riga di comando
:: scrive l'elenco di output dei dati per QBooks IIF import
:: scrive Dati dell'ordine commerciante per RUI
:: stringa della riga di comando di esempio per testing
:: listmail [firstname] [lastname] ["address string"] ["city string"] [state] [zip] [Order #] [PurchDate] [Regname] ["FirstName LastName"] [TransactionID] [PaymentMethod] [Total] [ProductID] [Qty] [Price_Each] [PackPrep] [Shipping] [CommissionPmt] [Invoice #]
:: esempio: dataout Bellewinkle Moose "123 Green Forest Way" "Vancouver" WA 98664 1004968 25/05/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 documenti e impostazioni \ amministratore \ miei documenti \ txt \ batchtest
echo elaborazione% 1% 2
: VARISET
::Converti i parametri della riga di comando% n nel
set di variabili stringa ($ FirstName) =% ~ 1
set ($ LastName) =% ~ 2
set ($ BillingAddress1) =% ~ 3
set ($ BillingCity) =% ~ 4
set ($ BillingState) =% ~ 5
set ($ BillingPostal) =% ~ 6
set ($ OrderNumber) =% ~ 7
set ($ Purch_Date) =% ~ 8
set ($ RegistrationName) =% ~ 9
set di turni ($ TransactionID) =% ~ 9 set di
turni
($ PaymentMethod) =% ~ 9
turni
($ Total) =% ~ 9
turni ($ ProductIdentifier) =% ~ 9
turni
($ Quantity) =% ~ 9 set
turni
($ Price_Each) =% ~ 9
turni
($ Pack_Prep) =% ~ 9
turni
($ Spedizione) =% ~ 9
turni
($ ServiceFee) =% ~ 9
turni
($ Sconto) =% ~ 9 set di
turni
($ Invoice) =% ~ 9 set di
turni
($ PrezzoUnitario) =% ~ 9
set _ShipCombName =% ($ FirstName)%% ($ LastName)%
echo il nome della combinazione nave è% _ShipCombName%
pause
:: scrive variabili di stringa nel file di 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
:: Assign Account by Fornitore di servizi
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _QBAcct = Amazon.com
:: 12-25-2009 aggiunto il secondo metodo Amazon pm't per versatilità
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)% == Sul conto 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
:: Assign Rep designator basato su QBAccount
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _Rep = Amazon
:: 12-25-2009 aggiunto il secondo metodo Amazon pm't per versatilità
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)% == Sul conto SET _Rep = RB
IF / i% ($ PaymentMethod)% == Mail SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: controlla i dati dell'indirizzo duplicato
findstr / 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
echo Indirizzo File Scritto
: ADDRFOUND
echo rappresentante selezionato è% _Rep%
echo account selezionato è:% _QBAcct%
pause
:: RUI OUT
:: scrivi ID ordine commerciante e ID ordine RUI su RUI
:: verifica dati RUI duplicati in writeRUI.txt
cd ..
cd RegKOut
trova / 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
:: Controlla i dati della fattura duplicati in writeIIF.txt
find / i "% ($ OrderNumber)%" writeIIF.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: HEADWRITE
if errorlevel 0 goto: LINEWRITE
: HEADWRITE
:: write Dati di intestazione, spedizione / movimentazione, sconto, rappresentante e commissione nel file di importazione IIF QB
echo% ($ OrderNumber)%% ($ Purch_Date)% Fattura% ($ TransactionID)%% _QBAcct% Accounts Receivable% ($ Total)%% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
echo SHP% ($ spedizione)% 1? >> writeIIF.txt
echo DISC% ($ Sconto)% 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
:: scrive prezzi scontati analizzati dalla variabile personalizzata:
echo% ($ ProductIdentifier) %% ($ Price_Each)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
: WRITE_DEFA
: scrive i prezzi predefiniti analizzati dai dati del prodotto
echo% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
:: 3 secondi di ritardo
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF