有人可以提供有效且安全的方法从批处理变量中删除报价吗?
我编写了一个批处理文件,该文件成功导入了参数%1,%2,%3等的列表,并将其放入命名变量中。其中一些参数包含多个单词,因此用双引号引起来。
> "Susie Jo" (%1)
> "Smith Barnes" (%2)
> "123 E. Main St." (%3)
接下来,将这些%variables放入命名变量中:
> 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....
因此,似乎在即将到来的%1%2 ...%n变量中添加〜tilde字符引起了一些变化。可能某些环境变量已更改?
我还尝试过使用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等)中插入〜tilde的“简短而甜美”的想法似乎影响了某些设置,并改变了CMD导航长路径名的方式。
2)我仍在寻找一种干净简单的方法来消除所选命名变量中的引号。
对于那些经验丰富的人的任何帮助将不胜感激。我的技能到此为止了。。。需要一些指导!
编辑12/26/2009 13:36 PST整个批处理文件:
Blockquote
:: dataout.bat
::修订2009年12月25日向传入的%variables添加〜tilde 以消除嵌入的“引号。”
::使用命令行参数写入地址列表
::为QBooks写入数据输出列表IIF导入
::写入RUI的商户订单数据
::用于测试的示例命令行字符串
:: listmail [firstname] [lastname] [“ address string”] [“ city string”] [state] [zip] [Order#] [PurchDate] [Regname] [“名字的姓氏”] [交易ID] [付款方式] [总计] [产品ID] [数量] [价格_每个] [PackPrep] [运费] [CommissionPmt] [发票编号]
::示例:dataout Bellewinkle Moose“ 123 Green Forest Way”“ Vancouver” WA 98664 1004968 2009/5/25“ Bellewinkle Moose”“ Olive Oyl” 101738“帐户” 20.67 FK-1P 1 8.95 3.00 1.39 239
@echo off
cls
c:
cd \
cd文档和设置\管理员\我的文档\ txt \批量测试
回显处理%1%2
:VARISET
::将%n命令行参数转换为字符串变量
set($ FirstName)=%〜1
set($ LastName)=% 〜2
set($ BillingAddress1)=%
〜3 set($ BillingCity)=%
〜4 set($ BillingState) =%
〜5套($ BillingPostal)=%〜6套($ OrderNumber)=%
〜7
套($ Purch_Date)=%〜8
套($ RegistrationName)=%〜9
移
组($的TransactionID)=%〜9
移位
集合($付款方法)=%〜9
移
集($总)=%〜9
移位集合($产品识别)=%〜9
移位
集合($数量)=%〜9
移
组($ Price_Each)=%〜9
移位
集合($ Pack_Prep)=%〜9
移位
集合($船运)=%〜9
移位
集合($ ServiceFee)=%〜9
移位
集合($折扣)=%〜9
移
组($发票)=%〜9
移位
集合($单价)=%〜9
组_ShipCombName =%($姓)%%($名字)%
回波船组合名称是%_ShipCombName%
暂停
::将字符串变量写入日志文件
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
::通过分配帐户服务提供商
IF / i%{$ PaymentMethod)%== Amazon应收账款SET _QBAcct = Amazon.com
:: 2009年12月25日添加了第二个Amazon pm't通用性方法
IF / i%{$ PaymentMethod)%== Amazon SET _QBAcct = Amazon.com
IF / i%($ PaymentMethod)%==主设置_QBAcct = Auth / Net
IF / i%($ PaymentMethod)%== MasterCard SET _QBAcct = Auth / Net
IF / i%($ PaymentMethod)%==签证SET _QBAcct = Auth / Net
IF / i%($ PaymentMethod)%== PayPal SET _QBAcct = PayPalPmts
IF / i%($ PaymentMethod)%==在帐户上SET _QBAcct =%($ RegistrationName)%
IF / i%($ PaymentMethod)%==邮件SET _QBAcct =%($ RegistrationName)%
IF / i%( $ PaymentMethod)%== AMER SET _QBAcct = Auth / Net
IF / i%($ PaymentMethod)%== DISC SET _QBAcct = Auth / Net
::根据QBAccount
IF / i 分配代表指示符%($ PaymentMethod)%== Amazon Receivables SET _Rep = Amazon
:: 2009年12月25日添加了第二个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)%==邮件SET _Rep = RB
IF / i%($ PaymentMethod)%== AMER SET _Rep = BlueZap
IF / i %($ PaymentMethod)%==磁盘设置_Rep = BlueZap
::检查重复的地址数据
findstr / i / s“%_ShipCombName%” addrlist.txt
回显错误级别:%errorlevel%(
如果错误级别1转到):ADDRWRITE
如果错误级别0转到:地址
:地址
回显%_ShipCombName%>> addrlist.txt
回显%($ BillingAddress1)%>> addrlist.txt
echo%($ BillingCity)%%($ BillingState)%%($ BillingPostal)%>> addrlist.txt
回显。>> addrlist.txt
回显地址文件写入
:ADDRFOUND
回显选择的代表是%_Rep%
回显选择的帐户是:%_QBAcct%
暂停
:: RUI OUT
::将商户ID和RUI订单ID写入RUI
::检查是否有重复的RUI数据在writeRUI.txt
cd ..
cd RegKOut中
找到/ i“%($ OrderNumber)%” writeRUI.txt
回显错误级别:%errorlevel%
如果错误级别1转到:RUIWRITE
如果错误级别0转到:IIFWRITE
:RUIWRITE
回显%($ Invoice)% %($ OrderNumber)%>> writeRUI.txt
::结束写入RUI
:: IIF OUT
:IIFWRITE
::检查writeIIF.txt中是否有重复的发票数据
查找/ i“%($ OrderNumber)%” writeIIF.txt
回显错误级别:%errorlevel%
如果错误级别1 goto:HEADWRITE
如果错误级别0 goto:LINEWRITE
:HEADWRITE
::写标头,发货/处理,折扣,代表和佣金数据到QB IIF导入文件
回显%($ OrderNumber)%%($ Purch_Date)%发票%($ TransactionID)%%_QBAcct%应收帐款%($ Total)%%_Rep %>> writeIIF.txt
回显H / P%($ Pack_Prep)%1吗?>> writeIIF.txt
echo SHP%($ Shipping)%1吗?>> writeIIF.txt
echo DISC%($ Discount)%1吗?>> writeIIF.txt
echo 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
转到:EOF
:WRITE_DEFA
:写入从产品数据中解析的默认价格
回声%($ ProductIdentifier)%%($ UnitPrice)%%($ Quantity)%吗?>> writeIIF.txt
转到:EOF
:: 3秒延迟
:: TYPE NUL | CHOICE.COM / N / CY / TY,3> NUL
:EOF