क्या बैच चर से उद्धरण हटाने के प्रभावी और सुरक्षित तरीके से कोई मदद कर सकता है?
मैंने एक बैच फ़ाइल लिखी है जो सफलतापूर्वक मापदंडों 1,% 2,% 3 आदि की सूची आयात करती है और उन्हें नामित चर में रखती है। इनमें से कुछ मापदंडों में कई शब्द हैं, और इसके लिए दोहरे उद्धरण चिह्नों में संलग्न हैं।
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
इन% चर को अगले नामांकित चर में रखा गया है:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
चर का सत्यापन प्रतिध्वनि द्वारा किया जाता है।
गूंज।% FirstName%
गूंज।% अंतिम नाम%
गूंज।% ShipAddr%
परिणाम के रूप में प्रदर्शित
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
मुझे चयनित चर पर शामिल उद्धरणों को समाप्त करने की आवश्यकता है। उदाहरण के लिए, FirstName और LastName का उपयोग कहीं और किया जाता है और इसमें उद्धरण शामिल नहीं होने चाहिए।
एक परीक्षण बैच फ़ाइल में मैं चर में ~ टिल्ड चरित्र का उपयोग करके उद्धरणों को समाप्त करने में सफल रहा।
> set FirstName=%~1
> set LastName=%~2
मुझे लगा कि मेरे पास समाधान है, लेकिन मैंने जल्द ही बैच फ़ाइलों के निष्पादन के साथ असामान्य व्यवहार का अनुभव किया। अचानक सीएमडी लंबी पथ मूर्तियों को मान्यता नहीं दे रहा है। पूर्ण पथ से बैच फ़ाइल का सामान्य निष्पादन
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
रिटर्न
> 'C:\Documents' is not recognized as an internal or external command....
तो ऐसा प्रतीत होगा कि आने वाले% 1% 2 के लिए ~ tilde वर्ण के अलावा ...% n चर में कुछ परिवर्तन हुआ है। संभवतः कुछ पर्यावरण चर बदल दिए गए हैं?
मैंने फ़ोर कमांड का उपयोग करते हुए विभिन्न प्रयासों के साथ चर के भीतर से क्लियरिंग को भी आज़माया। यह अजीब लगता है और मैं यह सीखने में असमर्थ रहा हूं कि कार्य करने के लिए चर की सूची बनाकर इसे कैसे पूरा किया जाए:
कुछ इस तरह:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
मुझे लगता है कि मेरे पास दो मुद्दे हैं।
1) आने वाले% 1% 2 चर (% ~ 1, आदि) में ~ टिल्ड डालने का मेरा 'छोटा और मीठा' विचार कुछ सेटिंग्स को प्रभावित करता है और लगता है कि कैसे सीएमडी लंबे पैथनाम को नेविगेट करता है।
2) मैं अभी भी चयनित नामित चर से उद्धरण को खत्म करने के लिए एक साफ और आसान तरीके की तलाश में हूं।
उन अधिक अनुभवी लोगों के लिए कोई मदद सबसे अधिक सराहना की जाएगी। मैं अपने कौशल के अंत में यहाँ हूँ ... कृपया कुछ मार्गदर्शन की आवश्यकता है!
सम्पूर्ण बैच फ़ाइल 12/26/2009 13:36 पीएसटी संपादित करें:
Blockquote
:: dataout.bat
:: revision 12/25/2009 ~ "अंतर्निहित चिह्न" उद्धरण चिह्नों को समाप्त करने के लिए आने वाले% चरों में tilde जोड़ें।
:: कमांड लाइन मापदंडों का उपयोग करके पता सूची
लिखते हैं :: QBooks IIF आयात के लिए डेटा आउटपुट सूची
लिखते हैं :: लिखते हैं RUI के लिए मर्चेंट ऑर्डर डेटा
:: परीक्षण के लिए नमूना कमांड लाइन स्ट्रिंग
:: सूची [firstname] [lastname] ["एड्रेस स्ट्रिंग"] ["शहर स्ट्रिंग"] [राज्य] [zip] [आदेश #] [प्रयोजन] [Regname] ["FirstName LastName"] [TransactionID] [PaymentMethod] [कुल] [ProductID] [मात्रा] [Price_Each] [PackPrep] [शिपिंग] [CommissionPmt] [चालान] [
:: उदाहरण: डेटाआउट बेलेविंकल मूस "123 ग्रीन फ़ॉरेस्ट वे" "वैंकूवर" डब्ल्यूए 98664 1004968 05/25/2009 "बेलेविंकल मूस" "ऑलिव ओयल" 101738 "अकाउंट पर" 20.67 FK-1P 1 8.95 3.00 1.39 239
@echo बंद
cls।
c:
cd \
cd डॉक्युमेंट्स और सेटिंग्स \ एडमिनिस्ट्रेटर \ my \ txt \ बैचटैस्ट
इको प्रोसेसिंग% 1% 2
: VARISET
::% N कमांड लाइन पैरामीटर को स्ट्रिंग चर
सेट ($ FirstName) =% ~ 1
सेट ($ LastName) =% ~ 2
सेट ($ BillingAddress1) =% ~ 3
सेट ($ BillingCity) =% / 4
सेट ($ BillingState) में कनवर्ट करें। =% ~ ५
सेट ($ बिलिंगपोस्टल) =% ~ ६
सेट ($ ऑर्डरनंबर) =% ~
ch सेट ($ पर्स_डेट) =% ~
(सेट ($ पंजीकरण नाम) =% ~ ९
पारी
सेट ($ TransactionID) =% ~ ९
शिफ्ट
सेट ($ PaymentMethod) =% ~ ९
पारी
सेट ($ कुल) =% ~ ९
पारी सेट ($ ProductIdentifier) =% ~ ९
शिफ्ट
सेट ($ मात्रा)% ~ ९
पारी
सेट ($ Price_Each) =% ~ ९
पारी
सेट ($ Pack_Prep) =% ~ ९
पारी
सेट ($ शिपिंग) =% ~ ९
पारी
सेट ($ ServiceFee) =% ~ ९
पारी
सेट ($ डिस्काउंट) = ९ ~ ९
पारी
सेट ($ चालान) =% ~ ९
पारी
सेट ($
यूनिटप्राइस ) =% ~ ९ सेट _ShipCombName =% ($ FirstName)%% ($ अंतिम नाम)%
इको शिप कॉम्बो नाम% _ShipCombName%
ठहराव है
::
लॉग वैरिएबल इको FN% ($ FirstName)% LN% ($ लास्टनाम)% BA% ($ BillingAddress1)%% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)%% ($ $) का स्ट्रिंग संस्करण लिखें। ऑर्डरनंबर)%% ($ Purch_Date)%% ($ RegistrationName)%% ($ TransactionID)%% ($ PaymentMethod)%% ($ कुल)%% ($ ProductIdentifier)%% ($ मात्रा)%% ($ Price_Each) %% ($ Pack_Prep)%% ($ शिपिंग)%% ($ ServiceFee)%% ($ डिस्काउंट)%% ($ चालान)%% ($ UnitPrice)%% _ShipCombName%: d_out_log.txt
:: असाइन खाता द्वारा असाइन करें सेवा प्रदाता
IF / i% ($ PaymentMethod)% == अमेज़ॅन प्राप्तकर्ता SET _QBAcct = Amazon.com
:: 12-25-2009 जोड़ा गया दूसरा अमेज़न pmatility के लिए विधि
IF / i% ($ PaymentMethod)% = Amazon SET _QBAcct = Amazon.com
IF / i% ($ PaymentMethod)% == MAST SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == मास्टरकार्ड SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == वीज़ा सेट _QBAcct = प्रामाणिक / नेट
IF /% ($ PaymentMethod)% == पेपल सेट _QBAcct = PayPalPmts
IF / i% ($ PaymentMethod)% == ऑन अकाउंट SET _QBAcct =% ($ RegistrationName)%
IF / i% ($ PaymentMethod)% == मेल SET _QBAcct =% ($ RegistrationMame)%
IF / i% $ PaymentMethod)% == AMER SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == DISC सेट _QBAcct = Auth / Net
:: QBAccount
IF / i% ($ PaymentMethod)% = पर आधारित निरूपित प्रतिनिधि पदनाम। Amazon Receivables SET _Rep = Amazon
:: 12-25-2009 ने बहुमुखी प्रतिभा के लिए दूसरा अमेज़न pm't जोड़ा विधि
IF / i% ($ PaymentMethod)% == Amazon SET _Rep = Amazon
IF / i% ($ PaymentMethod)% == MAST SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == मास्टरकार्ड SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == Visa SET _Rep = BlueZap
IF / i% ($ PaymentMethod)% == पेपल सेट _Rep = BlueZap
IF / i i% ($ PaymentMethod)% == खाता SET _Rep = RB
IF / i% ($ PaymentMethod)% == मेल SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: डुप्लिकेट एड्रेस डेटा की जांच के लिए जांच करें पता
/ i / s "% _ShipCombName%" addrlist.txt
echo errorlevel:% errorlevel%
अगर errorlevel 1 goto: ADDRWRITE
यदि त्रुटि हो तो 0: ADDRFOUND
: ADDRWRITE
गूंज% _ShipCombName% >> addrlist.txt
echo% ($ BillingAddress1)% >> addrlist.txt
echo% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)% >> addrlist.txt
इको। >> addrlist.txt
इको एड्रेस फाइल लिखा गया
: ADDRFOUND
इको चयनित प्रतिनिधि% _Rep%
इको चयनित खाता है:% _QBAcct%
pause
:: RUI OUT
:: राइट टू मर्चेंट ऑर्डर आईडी और EUI ऑर्डर आईडी को RUI
:: डुप्लिकेट RUI डेटा की जांच करें in writeRUI.txt
cd ..
cd RegKOut
find / i "% ($ ऑर्डरनंबर)%" राइटरयूआईईटीईटी
इको एररवेल्ड :% एररलेवल %
अगर इफलोवेलेट 1 गोटो: रिउविराइट इ सिटेलवेल
0 गोटो: IIFWRITE
: RUIWRITE
इको% ($ इनवॉइस)% % ($ ऑर्डरनंबर)% >> writeRUI.txt
:: end लिखना RUI
:: IIF OUT
: IIFWRITE
:: राइट इनवाइट डुप्लिकेट इनवॉइस के लिए जाँच करें inIIF.txt
/ i "% ($ ऑर्डरनंबर)%" राइट आईआईएफ.ई.टी.
इको एररवेलेवल :%
iflevel%%
अगर एररवल 1 गेदो: HEWWRITE अगर एररवेले 0 गोटो: LINEWRITE
: HEADWRITE
:: राइट हैडर, जहाज / हैंडलिंग, छूट, QB IIF आयात फ़ाइल के लिए
रिपॉजिट और कमीशन डेटा इको% ($ ऑर्डरनंबर)%% ($ Purch_Date)% चालान% ($ लेन-देन)%% _QBAcctc खाते के प्राप्य% ($ कुल)% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
इको SHP% ($ शिपिंग)% 1? >> writeIIF.txt
echo DISC% ($ डिस्काउंट)% 1? >> writeIIF.txt
इको कॉम% ($ ServiceFee)% 1? >> writeIIF.txt
: LINEWRITE
IF / i% ($ ProductIdentifier)% PH PH-1 गोटो WRITE_DEFA ELSE गोटो WRITE_DISC
इको% ($ ProductIdentifier)%
: WRITE_DISC
:: कस्टम वेरिएबल से पार्स की गई रियायती कीमतों को लिखते हैं:
इको% ($ ProductDentifier) %% ($ Price_Each)%% ($ मात्रा)%? >> writeIIF.txt
गोटो: EOF
: WRITE_DEFA
: उत्पाद डेटा
गूंज% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ मात्रा)% से पार्इ गई डिफ़ॉल्ट कीमतें लिखता है ? >> writeIIF.txt
गोटो: EOF
:: 3-सेकंड की देरी
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF