Batch file 一行中的DOS批处理参数子字符串

Batch file 一行中的DOS批处理参数子字符串,batch-file,dos,Batch File,Dos,我有一个包含以下两行的批处理文件,并将其更改为一行代码: set arg=%1% "C:\Program Files\TextPad 6\TextPad.exe" -u "D:\www\%arg:~14,-1%" 上下文是我使用的网页url处理程序,如中所述 目前,我通过将批处理文件设置为url命令来完成此操作,因此将%1传递到该文件中,然后进行转换,然后运行文本编辑器。但是我更愿意在url命令中完成这一切,这样我就不必再使用批处理文件了。经过多次尝试和错误后,我发现这是可行的: cmd.e

我有一个包含以下两行的批处理文件,并将其更改为一行代码:

set arg=%1%
"C:\Program Files\TextPad 6\TextPad.exe" -u "D:\www\%arg:~14,-1%"
上下文是我使用的网页url处理程序,如中所述


目前,我通过将批处理文件设置为url命令来完成此操作,因此将%1传递到该文件中,然后进行转换,然后运行文本编辑器。但是我更愿意在url命令中完成这一切,这样我就不必再使用批处理文件了。

经过多次尝试和错误后,我发现这是可行的:

cmd.exe /v:on /c set arg=%1& start /D"C:\Program Files\TextPad 6" TextPad.exe "D:\www\!arg:~14,-1!"

经过多次尝试和错误,我发现这是可行的:

cmd.exe /v:on /c set arg=%1& start /D"C:\Program Files\TextPad 6" TextPad.exe "D:\www\!arg:~14,-1!"

仅供参考-不需要集合arg=%1%中的尾随百分比,尽管它也不会造成任何伤害。所需的只是设置arg=%1FYI-不需要设置arg=%1%中的尾随百分比,尽管它也不会造成任何伤害。需要做的就是设置arg=%1+1,这真是太好了。我应该更清楚地知道需要延迟扩展。我只是没有好好想清楚。我正在删除我的错误答案。小心-我想你的arg值中可能有一个额外的空格。您可能应该在测试之前删除空间&尝试和错误似乎是一天的顺序。我忘了说param的末尾包含100个左右。因此,我将您的命令更改为:cmd.exe/v:on/c set arg=%1&set arg=D:\Staffey\www\adev\!arg:~13!&开始/DC:\Program Files\TextPad 6 TextPad.exe!阿格!第二个参数设置为在调用程序之前执行所有处理。现在可以了-谢谢@wmz和@dbenham的帮助+1、干得好。我应该更清楚地知道需要延迟扩展。我只是没有好好想清楚。我正在删除我的错误答案。小心-我想你的arg值中可能有一个额外的空格。您可能应该在测试之前删除空间&尝试和错误似乎是一天的顺序。我忘了说param的末尾包含100个左右。因此,我将您的命令更改为:cmd.exe/v:on/c set arg=%1&set arg=D:\Staffey\www\adev\!arg:~13!&开始/DC:\Program Files\TextPad 6 TextPad.exe!阿格!第二个参数设置为在调用程序之前执行所有处理。现在可以了-谢谢@wmz和@dbenham的帮助!