You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMD脚本问题:文件名空格转义与排除含compressed后缀的文件

修正后的CMD脚本及问题解决说明

问题1:处理文件名中的空格

原脚本里call :test %%i没给文件名加引号,导致带空格的文件名被拆成多个参数,%1只能拿到空格前的部分。解决步骤:

  • 给for /f加上"delims=",确保dir输出的每一行(哪怕带空格)都被完整读取成%%i;
  • 调用:test标签时把%%i用引号包起来:call :test "%%i",让整个文件名作为单个参数传递;
  • 在:test标签里用%~f1就能正确解析出带空格的完整路径。

问题2:排除末尾含"compressed"的文件

原脚本的if "%1"=="*compressed.mov"没法用通配符匹配文件名,CMD的==是精确比对。这里提供两种实用解决方式:

方式1:字符串截取(高效直接)

利用CMD的字符串截取功能,取文件名(不含扩展名)的最后10个字符("compressed"刚好是10个字母),判断是否匹配:

if /i "%~n1:~-10%"=="compressed" goto :eof

/i参数实现不区分大小写的匹配。

方式2:findstr匹配(灵活适配复杂场景)

通过findstr检查文件名是否以"compressed"结尾:

echo "%~n1" | findstr /i /e "compressed" >nul
if not errorlevel 1 goto :eof
  • /i:忽略大小写;
  • /e:限定匹配行尾(也就是文件名末尾);
  • >nul:屏蔽findstr的输出,只通过errorlevel判断是否匹配成功。

完整修正脚本

@ECHO OFF
for /f "delims=" %%i in ('dir *.mov /b') do call :test "%%i"
goto continue

:test
:: 排除文件名(不含扩展名)末尾为compressed的文件(不区分大小写)
if /i "%~n1:~-10%"=="compressed" goto :eof

:: 输出带空格的完整路径
echo "%~f1"
goto :eof

:continue
pause

内容的提问来源于stack exchange,提问作者Rayearth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:55:16