2016-04-14 50 views
2

對此我很陌生,所以希望有人可以幫助新手。到目前爲止找不到答案。本質上,我試圖創建一個監視文件夾,該文件夾會拾取新的.MXF文件,運行特定的命令行應用程序,並使用原始文件名和_new重命名新文件。在BATCH中設置文件名作爲變量

@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

用'@echo ON'運行它t o看看會發生什麼。分析命令重複並記下任何錯誤。 – Stephan

回答

0

您需要提取沒有擴展名的文件名,才能將其用作新名稱中的變量。 爲了讓你可以使用文件名:

%%~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.mxftest2_new.mxf

+0

嗨,謝謝!因此,%% i是文件夾中的任何新輸入,%%〜ni是基於新輸入(%% i)的新文件名?我有正確的嗎? –