我是新手,所以希望有人可以帮助新手。到目前为止找不到答案。本质上我正在尝试创建一个监视文件夹,它可以获取新的.MXF文件,运行特定的命令行应用程序并使用原始文件名加_new重命名新文件。
@echo off
:loop
if exist "C:\Input\*.mxf" (
for %%a in ("C:\Input\*.mxf") do (
C:\BMX\bmxtranswrap -o C:\Output\NEW.mxf -t as11op1a -y 09:59:50:00 --afd 10 --pass-anc all -anc-max 2048 "%%a"
ping -n 5 localhost >nul
del "%%a"
)
)
ping -n 5 localhost >nul
goto :loop
我最初尝试使用%~n1
命令来传递我在CMD脚本中工作的名称。
C:\BMX\bmxtranswrap -o C:\Output\%~n1_NEW.mxf -t as11op1a -y 09:59:50:00 --afd 10 --pass-anc all -anc-max 2048 "%%a"
然而,这并不起作用。如果有一个我错过的命令要通过源文件名,请告诉我。 非常感谢。
答案 0 :(得分:1)
您需要提取不带扩展名的文件名,以便将其用作新名称中的变量。 要获取您可以使用的文件名:
%%~ni
这应该有效:
@echo off
if exist "C:\Input\*.mxf" (
FOR %%i IN ("c:\Input\*.mxf") DO (
REM ECHO %%~ni - This is the filename without the extensoion for the new file
C:\BMX\bmxtranswrap -o C:\Output\%%~ni_new.mxf -t as11op1a -y 09:59:50:00 --afd 10 --pass-anc all -anc-max 2048 %%i
ping -n 5 localhost >nul
del %%i
)
)
注意:强>
我在没有bmxtranswrap
行的情况下测试了上述代码,新文件名按预期显示:test_new.mxf
和test2_new.mxf