.bat 根据多拖放文件设置变量

.bat 根据多拖放文件设置变量

我如何根据拖放的文件设置.bat 文件中的变量?

Set file=C:\files\movie.mp4
Set folder=C:\files\

我想改变这一点,所以当我将文件拖放到.bat 中时,文件变量会更改为被拖动文件的路径,并且文件夹会更改为文件父目录。

那可能吗?

编辑上述问题已得到解决,感谢克尔塔里&大卫·波斯蒂尔

现在,当我将多个文件拖放到 .bat 上时,我遇到了问题。它只执行第一个文件,而不触及其余文件。但如果我逐个拖放文件,它就会起作用。

我应该做哪些改变才能使其工作?

我的代码是

SET file=%~1
SET folder=%~dp1

ffmpeg -y -ss 120 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev001.ts"
ffmpeg -y -ss 300 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev002.ts"
ffmpeg -y -ss 600 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev003.ts"

答案1

邮政StackOverflow 介绍了如何做到这一点:

拖放功能在批处理文件中实现得很糟糕。如果名称中有空格,则用引号引起来,但如果发现特殊字符,如 &,;^,则不加引号。

对于文件名中仅有的空格,您只需稍微更改代码。

@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r

%~1总是扩展为未引用的版本,因此总是可以以安全的方式引用它们。

"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets" c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"

相关内容