我希望能够完成与下面类似的东西,但是使用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的代码......但无济于事(我不知道我在做什么)
在此先感谢您的帮助!
@echo off
title pcutmp3
cd /d "F:\pcutmp3"
:again
if "%~1" == "" goto done
java -jar pcutmp3.jar --cue "%~1" --dir "F:\Test"
shift
goto again
:done
pause
exit
Run Code Online (Sandbox Code Playgroud)
这是你基本的"吃所有参数"循环.重要的部分是shift关键字,它吃掉%1,并将所有参数向下移动一次(因此%2变为%1,%3变成%2等)
所以,如果你像这样运行它:
pcutmp3.bat a b c
Run Code Online (Sandbox Code Playgroud)
它会像这样调用java:
java -jar pcutmp3.jar --cue "a" --dir "F:\Test"
java -jar pcutmp3.jar --cue "b" --dir "F:\Test"
java -jar pcutmp3.jar --cue "c" --dir "F:\Test"
Run Code Online (Sandbox Code Playgroud)
通过拖放处理%1,移位或%*失败,因为当它创建命令行时,资源管理器不是很聪明.
Cool&stuff.cue浏览器没有引用类似的文件,因此您可以获得类似的cmdline
pcutmp3.bat Cool&stuff.cue
所以%1只有Cool甚至%*只是Cool,但pcutmp3.bat结束后,CMD.EXE试图执行一个stuff.cue.
要处理这些东西你可以使用它,它通过使用cmdcmdline变量捕获所有文件名.
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem *** Take the cmd-line, remove all until the first parameter
rem *** Copy cmdcmdline without any modifications, as cmdcmdline has some strange behaviour
set "params=!cmdcmdline!"
set "params=!params:~0,-1!"
set "params=!params:*" =!"
set count=0
rem Split the parameters on spaces but respect the quotes
for %%G IN (!params!) do (
set /a count+=1
set "item_!count!=%%~G"
rem echo !count! %%~G
)
rem list the parameters
for /L %%n in (1,1,!count!) DO (
echo %%n #!item_%%n!#
)
pause
REM ** The exit is important, so the cmd.exe doesn't try to execute commands after ampersands
exit
Run Code Online (Sandbox Code Playgroud)
顺便说一句.尽管"标准"批次行限制为8191个字符,但拖放操作的行限制为~2048个字符.
| 归档时间: |
|
| 查看次数: |
11560 次 |
| 最近记录: |