批处理脚本中SET /P fname无法识别含空格文件名的解决方法
解决批处理脚本无法识别含空格文件名的问题
修改后的脚本代码
@echo off SET /P "fname=Input File Name: " for /f "delims=" %%f in ("%fname%") do ( "C:\ffmpeg" -i "%%~f" -aspect 720:540 -c copy "converted/%%~nf_.mp4" )
关键修改说明
- 变量赋值加引号:
SET /P "fname=Input File Name: "用双引号包裹整个赋值语句,确保用户输入的带空格文件名被完整存储到变量中,不会被拆分。 - 使用
for /f并禁用分隔符:for /f "delims="取消了批处理默认的空格、制表符等分隔规则,将整个文件名作为单个循环项处理,避免原脚本中文件名被空格拆分成多个无效项的问题。 - 变量传入加引号:
("%fname%")把变量用双引号包裹后传入循环,确保即使用户输入时没加引号,整个文件名也能被正确识别。
如果需要处理&、!这类特殊字符,可以启用延迟扩展进一步优化:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION SET /P "fname=Input File Name: " for /f "delims=" %%f in ("!fname!") do ( "C:\ffmpeg" -i "%%~f" -aspect 720:540 -c copy "converted/%%~nf_.mp4" ) ENDLOCAL
内容的提问来源于stack exchange,提问作者JRV
相关产品推荐
相关产品推荐

