Ai có thể giúp đỡ với cách hiệu quả và an toàn để loại bỏ dấu ngoặc kép từ các biến hàng loạt không?
Tôi đã viết một tệp lô nhập thành công danh sách các tham số% 1,% 2,% 3, v.v. và đặt chúng vào các biến được đặt tên. Một số tham số này chứa nhiều từ và được đặt trong dấu ngoặc kép.
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
Các biến% này được đặt tiếp theo trong các biến có tên:
> set FirstName=%1
> set LastName=%2
> set ShipAddr=%3
xác minh các biến được thực hiện bằng echo.
echo.% FirstName%
echo.% LastName%
echo.% ShipAddr%
kết quả hiển thị dưới dạng
"Susie Jo"
"Smith Barnes"
"123 E. Main St."
Tôi cần loại bỏ các dấu ngoặc kép trên các biến đã chọn. Ví dụ: FirstName và LastName được sử dụng ở nơi khác và không được bao gồm dấu ngoặc kép.
Trong một tệp lô thử nghiệm, tôi đã thành công khi loại bỏ dấu ngoặc kép bằng ký tự dấu ngã ~ trong các biến.
> set FirstName=%~1
> set LastName=%~2
Tôi nghĩ rằng tôi đã có giải pháp, nhưng tôi sớm gặp phải hành vi bất thường khi thực thi các tệp hàng loạt. Đột nhiên CMD không nhận ra trạng thái đường dẫn dài. Thực hiện bình thường tệp hàng loạt từ đường dẫn đầy đủ
> C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
trả lại
> 'C:\Documents' is not recognized as an internal or external command....
Vì vậy, có vẻ như việc thêm ký tự dấu ngã ~ vào các biến% 1% 2 ...% n sắp tới đã gây ra một số thay đổi. Có thể một số biến môi trường đã bị thay đổi?
Tôi cũng đã thử xóa dấu ngoặc kép từ bên trong biến bằng nhiều lần thử bằng lệnh FOR. Điều đó có vẻ khó xử và tôi đã không thể học cách thực hiện điều này bằng cách tạo danh sách các biến để thực hiện tác vụ:
một cái gì đó như thế này:
for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
)
Tôi nghĩ tôi có hai vấn đề.
1) Ý tưởng 'ngắn gọn và thú vị' của tôi về việc chèn ~ dấu ngã trong các biến% 1% 2 (% ~ 1, v.v.) đến dường như đã ảnh hưởng đến một số cài đặt và thay đổi cách CMD điều hướng các tên đường dẫn dài.
2) Tôi vẫn đang tìm kiếm một cách sạch sẽ và dễ dàng để loại bỏ dấu ngoặc kép khỏi các biến được đặt tên đã chọn.
Bất kỳ sự giúp đỡ nào cho những người có kinh nghiệm hơn sẽ được đánh giá cao nhất. Tôi đang ở cuối các kỹ năng của tôi ở đây ... cần một số hướng dẫn!
chỉnh sửa 26/12/2009 13:36 PST toàn bộ tệp loạt:
Blockquote
:: dataout.bat :: rev 12/25/2009
add ~ dấu ngã vào các biến% đến để loại bỏ dấu ngoặc kép "nhúng.
:: ghi danh sách địa chỉ bằng cách sử dụng tham số dòng lệnh
:: ghi danh sách đầu ra dữ liệu cho QBooks IIF import
:: write Dữ liệu đơn đặt hàng của người bán cho RUI
:: chuỗi dòng lệnh mẫu để thử nghiệm
:: 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 #]
:: example: dataout Bellewinkle Moose "123 Green Forest Way" "Vancouver" WA 98664 1004968 25/05/2009 "Bellewinkle Moose" "Olive Oyl" 101738 "Trên tài khoản" 20,67 FK-1P 1 8,95 3,00 1,39 239
@echo off
cls
c:
cd \
cd tài liệu và cài đặt \ quản trị viên \ tài liệu của tôi \ txt \ batchtest
echo xử lý% 1% 2
: VARISET
::Chuyển đổi% n tham số dòng lệnh thành biến chuỗi
được đặt ($ FirstName) =% ~ 1
set ($ LastName) =% ~ 2
set ($ BillingAddress1) =% ~ 3
set ($ BillingCity) =% ~ 4
set ($ BillingState) =% ~ 5
bộ ($ BillingPostal) =% ~ 6
bộ ($ OrderNumber) =% ~ 7
bộ ($ Purch_Date) =% ~ 8
bộ ($ Tên đăng ký) =% ~ 9
bộ ca ($ TransactionID) =% ~ 9 bộ
ca
($ PaymentMethod) =% ~ 9 bộ
ca
(Tổng số tiền $) =% ~ 9
bộ ca ($ ProductIdentifier) =% ~ 9 bộ
ca
($ Số lượng) =% ~ 9 bộ
ca
($ Price_Each) =% ~ 9
ca
($ Pack_Prep) =% ~ 9
ca
($ Vận chuyển) =% ~ 9
ca
($ ServiceFee) =% ~ 9
ca
(Giảm giá $) =% ~ 9
shift
set ($ Invoice) =% ~ 9
shift
set ($ UnitPrice) =% ~ 9
set _ShipCombName =% ($ FirstName)%% ($ LastName)%
echo ship tổ hợp tên là% _ShipCombName%
tạm dừng
:: ghi biến chuỗi vào logfile
echo FN% ($ FirstName)% LN% ($ LastName)% BA% ($ BillingAddress1)%% ($ BillingCity)%% ($ BillingState)%% ($ BillingPostal)%% ($ OrderNumber)%% ($ Purch_Date)%% ($ RegisterName)%% ($ TransactionID)%% ($ PaymentMethod)%% ($ Total)%% ($ ProductIdentifier)%% ($ Quantity)%% ($ Price_Each) %% ($ Pack_Prep)%% ($ Vận chuyển)%% ($ ServiceFee)%% ($ Giảm giá)%% ($ Hóa đơn)%% ($ UnitPrice)%% _ShipCombName% >> d_out_log.txt
:: Chỉ định tài khoản bởi Nhà cung cấp dịch vụ
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _QBAcct = Amazon.com
:: 12-25-2009 đã thêm phương thức Amazon pm't thứ hai cho tính linh hoạt
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)% == Trên tài khoản SET _QBAcct =% ($ RegisterName)%
IF / i% ($ PaymentMethod)% == Mail SET _QBAcct =% ($ RegisterName)%
IF / i% ( $ PaymentMethod)% == AMER SET _QBAcct = Auth / Net
IF / i% ($ PaymentMethod)% == DISC SET _QBAcct = Auth / Net
:: Chỉ định người đại diện dựa trên QBAccount
IF / i% ($ PaymentMethod)% == Amazon Receivables SET _Rep = Amazon
:: 12-25-2009 đã thêm phương thức Amazon pm't thứ hai cho tính linh hoạ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)% == Trên Account SET _Rep = RB
IF / i% ($ PaymentMethod)% == Mail SET _Rep = RB
IF / i% ($ PaymentMethod)% == AMER SET _Rep = BlueZap
IF / i % ($ PaymentMethod)% == DISC SET _Rep = BlueZap
:: kiểm tra dữ liệu địa chỉ trùng lặp
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 Địa chỉ Tệp Đã viết
: ADDRFOUND
echo đã chọn đại diện là% _Rep%
echo đã chọn tài khoản là:% _QBAcct%
pause
:: RUI OUT
:: ghi ID đơn đặt hàng của người bán & ID đặt hàng RUI thành RUI
:: kiểm tra dữ liệu RUI trùng lặp trong 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
:: end ghi RUI
:: IIF OUT
: IIFWRITE
:: Kiểm tra dữ liệu hóa đơn trùng lặp trong writeIIF.txt
find / i "% ($ OrderNumber)%" writeIIF.txt
echo errorlevel:% errorlevel%
if errorlevel 1 goto: HEADWRITE
if errorlevel 0 goto: LINEWRITE
: HEADWRITE
:: write Dữ liệu tiêu đề, Giao hàng / Xử lý, chiết khấu, Đại diện & hoa hồng vào tệp nhập QB IIF
echo% ($ OrderNumber)% ($ Purch_Date)% Invoice% ($ TransactionID)%% _QBAcct% Khoản phải thu% ($ Total)%% _Rep % >> writeIIF.txt
echo H / P% ($ Pack_Prep)% 1? >> writeIIF.txt
echo SHP% ($ Vận chuyển)% 1? >> writeIIF.txt
echo DISC% ($ Giảm giá)% 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
:: ghi giá chiết khấu được phân tích cú pháp từ biến tùy chỉnh:
echo% ($ ProductIdentifier) %% ($ Giá_Each)%% ($ Số lượng)%? >> writeIIF.txt
goto: EOF
: WRITE_DEFA
: ghi giá mặc định được phân tích cú pháp từ Dữ liệu sản phẩm
echo% ($ ProductIdentifier)%% ($ UnitPrice)%% ($ Quantity)%? >> writeIIF.txt
goto: EOF
:: Độ trễ 3 giây
:: TYPE NUL | CHOICE.COM / N / CY / TY, 3> NUL
: EOF