正如在另一个线程中所讨论的如何避免cmd.exe解释shell特殊字符,如<> ^ 从命令行获取所有参数并不容易.
一个简单的
set var=%1
set "var=%~1"
Run Code Online (Sandbox Code Playgroud)
如果你有这样的要求,还不够
myBatch.bat abc"&"^&def
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案,但它需要一个临时文件,它也不是防弹.
@echo off
setlocal DisableDelayedExpansion
set "prompt=X"
(
@echo on
for %%a in (4) do (
rem #%1#
)
) > XY.txt
@echo off
for /F "delims=" %%a in (xy.txt) DO (
set "param=%%a"
)
setlocal EnableDelayedExpansion
set param=!param:~7,-4!
echo param='!param!'
Run Code Online (Sandbox Code Playgroud)
它失败了像myBatch.bat%a,它显示4而不是%a
在这种情况下,简单的回声%1将起作用.
这显然是for循环,但我不知道如何改变它.
也许存在另一个简单的解决方案
我不需要这个来解决实际问题,但我喜欢在每种情况下都是防弹的解决方案,而不仅仅是在大多数情况下.
我希望能够完成与下面类似的东西,但是使用pcutmp3:
我无法绕过Joey所做的添加,因为我通常不会这样做,但我想在批处理文件中删除多个文件(.cue)并让它运行多次,这就是发生在批处理文件中的以下行:
@echo off
title pcutmp3
cd /d "F:\pcutmp3"
java -jar pcutmp3.jar --cue %1 --dir "F:\Test"
pause
exit
Run Code Online (Sandbox Code Playgroud)
我试过调整Joey的代码......但无济于事(我不知道我在做什么)
在此先感谢您的帮助!