从FOR循环获取包含空格的文件名

时间:2018-05-01 21:40:31

标签: batch-file cmd

编辑:这是我的完整代码。

@echo off
cls
Set "file=%~f1"
Set "f_name=%~n1"
Set "n_name=%f_name: =_%"
Set "target=C:\Users\%USERNAME%\Desktop"
ffmpeg -i "%file%" ^
       -dn ^
       -an ^
       -r 25 ^
       -vcodec hap ^
       -format hap_alpha  ^
       "%target%\%n_name%_Hap_alpha_v1.mov"
pause

我使用此代码在给定文件上执行某些操作。 但是如果文件名包含空格"文件名为Red_v3.mov"我只得到" Red_v3.mov"作为%% ~nxF的输出如何获取包含空格的名称? 这样我就可以取代" "用" _"使用set%file_1 %% f_name:= _%

@echo off
set file=%~dpnx1
for %%F in (%file%) do ( 
    Set f_ext=%%~nxF
    Set f_name=%%~nF
    )
echo %file% 
echo %f_ext%
echo %f_name%
pause

由于 亚历

1 个答案:

答案 0 :(得分:2)

您的代码的问题在于您没有使用引号,但绝对不需要将命令行参数设置为环境变量,然后使用FOR命令再次拆分文件名。您已经可以使用命令行参数执行此操作。

@echo off
set "file=%~f1"
Set "f_ext=%~x1"
Set "f_name=%~n1"