我如何根据拖放的文件设置.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"