ใครสามารถช่วยด้วยวิธีการลบเครื่องหมายคำพูดที่มีประสิทธิภาพและปลอดภัยจากตัวแปรแบตช์ได้หรือไม่?
ฉันได้เขียนไฟล์แบตช์ซึ่งนำเข้ารายการพารามิเตอร์% 1,% 2,% 3 และอื่น ๆ ได้สำเร็จและวางไว้ในตัวแปรที่มีชื่อ พารามิเตอร์เหล่านี้บางตัวมีหลายคำและด้วยเครื่องหมายคำพูดคู่
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
ตัวแปร% เหล่านี้จะอยู่ในตัวแปรที่ตั้งชื่อถัดไป:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
การตรวจสอบตัวแปรทำได้โดย echo
เสียงสะท้อน% FirstName%
echo% LastName%
echo% ShipAddr%
ผลลัพธ์จะแสดงเป็น
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
ฉันต้องการกำจัดคำพูดที่รวมอยู่ในตัวแปรที่เลือก ตัวอย่างเช่น FirstName และ LastName ถูกใช้ที่อื่นและต้องไม่มีเครื่องหมายคำพูด
ในไฟล์ชุดการทดสอบฉันประสบความสำเร็จในการกำจัดเครื่องหมายคำพูดโดยใช้อักขระ ~ tilde ในตัวแปร
> set FirstName=%~1
> set LastName=%~2
ฉันคิดว่าฉันมีวิธีแก้ปัญหา แต่ในไม่ช้าฉันก็พบพฤติกรรมที่ผิดปกติกับการเรียกใช้ไฟล์แบตช์ ทันใดนั้น CMD ไม่สามารถจดจำสถิติเส้นทางยาวได้ การดำเนินการตามปกติของไฟล์แบตช์จากเส้นทางแบบเต็ม
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
ผลตอบแทน
> 'C:\Documents' is not recognized as an internal or external command....
ดังนั้นดูเหมือนว่าการเพิ่มอักขระ ~ tilde ให้กับตัวแปร% 1% 2 ... % n ที่กำลังจะมาถึงทำให้เกิดการเปลี่ยนแปลงบางอย่าง อาจมีการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมบางอย่าง?
ฉันยังลองล้างเครื่องหมายคำพูดจากภายในตัวแปรด้วยความพยายามต่างๆโดยใช้คำสั่ง FOR มันดูอึดอัดและฉันไม่สามารถเรียนรู้วิธีการทำสิ่งนี้ให้สำเร็จได้โดยการสร้างรายการตัวแปรเพื่อดำเนินการ:
อะไรทำนองนี้:
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 ฯลฯ ) ดูเหมือนจะส่งผลต่อการตั้งค่าบางอย่างและเปลี่ยนแปลงวิธีที่ CMD นำทางชื่อพา ธ แบบยาว
2) ฉันยังคงค้นหาวิธีที่ง่ายและสะอาดในการกำจัดเครื่องหมายคำพูดจากตัวแปรที่เลือก
ความช่วยเหลือใด ๆ สำหรับผู้ที่มีประสบการณ์มากกว่าจะได้รับการชื่นชมมากที่สุด ฉันอยู่ในจุดสิ้นสุดของทักษะที่นี่ ... ต้องการคำแนะนำโปรด!
แก้ไข 26/12/2552 13:36 PST ไฟล์แบตช์ทั้งหมด:
Blockquote
:: dataout.bat
:: revision 12/25/2009 เพิ่ม ~ tilde ให้กับตัวแปร% ขาเข้าเพื่อกำจัด "เครื่องหมายคำพูดที่ฝังอยู่
:: เขียนรายการที่อยู่โดยใช้พารามิเตอร์บรรทัดคำสั่ง
:: เขียนรายการเอาต์พุตข้อมูลสำหรับการนำเข้า QBooks IIF
:: เขียน ข้อมูลใบสั่งผู้ขายสำหรับ RUI
:: สตริงบรรทัดคำสั่งตัวอย่างสำหรับการทดสอบ
:: listmail [ชื่อแรก] [นามสกุล] ["สตริงที่อยู่"] ["สตริงเมือง"] [รัฐ] [zip] [คำสั่งซื้อ #] [PurchDate] [Regname] ["FirstName LastName"] [TransactionID] [PaymentMethod] [Total] [ProductID] [Qty] [Price_Each] [PackPrep] [Shipping] [CommissionPmt] [Invoice #]
:: example: 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 เอกสารและการตั้งค่า \ administrator \ my documents \ txt \ batchtest
echo processing% 1% 2
: VARISET
::แปลงพารามิเตอร์บรรทัดคำสั่ง% n เป็น
ชุด ตัวแปรสตริง ($ FirstName) =% ~ 1
ชุด ($ LastName) =% ~ 2
ชุด ($ BillingAddress1) =% ~ 3
ชุด ($ BillingCity) =% ~ 4
ชุด ($ BillingState) =% ~ 5
set ($ BillingPostal) =% ~ 6
set ($ OrderNumber) =% ~ 7
set ($ Purch_Date) =% ~ 8
set ($ RegistrationName) =% ~ 9
shift
set ($ TransactionID) =% ~ 9
shift
set ($ PaymentMethod) =% ~ 9
shift
set ($ Total) =% ~ 9
shift set ($ ProductIdentifier) =% ~ 9
shift
set ($ Quantity) =% ~ 9
shift
set ($ Price_Each) =% ~ 9
shift
set ($ Pack_Prep) =% ~ 9
shift
set ($ Shipping) =% ~ 9
shift
set ($ ServiceFee) =% ~ 9
shift
set ($ Discount) =% ~ 9
shift
set ($ Invoice) =% ~ 9
shift
set ($ UnitPrice) =% ~ 9
set _ShipCombName =% ($ FirstName)%% ($ LastName)%
ชื่อคอมโบเรือ echo คือ% _ShipCombName%
pause
:: เขียนตัวแปรสตริงไปยังไฟล์บันทึก
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)%% (ส่วนลด $)%% ($ Invoice)%% ($ UnitPrice)%% _ShipCombName% >> d_out_log.txt
:: กำหนดบัญชีโดย ผู้ให้บริการ
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _QBAcct = Amazon.com
:: 12-25-2009 เพิ่มวิธี Amazon pm ที่สองสำหรับความคล่องตัว
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)% == ในบัญชี 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
:: กำหนด Rep designator ตาม QBAccount
IF / i% ($ PaymentMethod)% == Amazon ลูกหนี้ SET _Rep = Amazon
:: 12-25-2009 เพิ่มวิธีที่สอง Amazon pm't สำหรับความคล่องตัว
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)% == ในบัญชี SET _Rep = RB
IF / i% ($ PaymentMethod)% == Mail SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: ตรวจสอบข้อมูลที่อยู่ที่ซ้ำกัน
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 >> addrlist.txt
ไฟล์ที่อยู่ echo เขียน
: ADDRFOUND
echo ที่เลือกตัวแทนคือ% _Rep%
echo บัญชีที่เลือกคือ:% _QBAcct%
pause
:: RUI OUT
:: เขียน Merchant Order ID & RUI Order ID ไปยัง RUI
:: ตรวจสอบข้อมูล RUI ที่ซ้ำกัน ใน 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
:: สิ้นสุดการเขียน RUI
:: IIF OUT
: IIFWRITE
:: ตรวจสอบข้อมูลใบแจ้งหนี้ที่ซ้ำกันใน writeIIF.txt
find / i "% ($ OrderNumber)%" writeIIF.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: HEADWRITE
if errorlevel 0 goto: LINEWRITE
: HEADWRITE
:: write ส่วนหัวการจัดส่ง / การจัดการส่วนลดข้อมูลตัวแทนและค่าคอมมิชชั่นไปยังไฟล์นำเข้า QB IIF
echo% ($ OrderNumber)%% ($ Purch_Date)% ใบแจ้งหนี้% ($ TransactionID)%% _QBAcct% บัญชีลูกหนี้% ($ รวม)%% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
echo SHP% ($ Shipping)% 1? >> writeIIF.txt
echo DISC% (ส่วนลด $)% 1? >> writeIIF.txt
ก้อง Comm% ($ ServiceFee)% 1? >> writeIIF.txt
: LINEWRITE
IF / i% ($ ProductIdentifier)% equ PH-1 ไปที่ WRITE_DEFA ELSE ไปที่ WRITE_DISC
echo% ($ ProductIdentifier)%
: WRITE_DISC
:: เขียนราคาลดที่แยกวิเคราะห์จากตัวแปรที่กำหนดเอง:
echo% ($ ProductIdentifier) %% ($ Price_Each)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
: WRITE_DEFA
: เขียนราคาเริ่มต้นที่แยกวิเคราะห์จากข้อมูลผลิตภัณฑ์
echo% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
:: 3-second delay
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF