本帖最后由 aloha20200628 于 2023-12-27 10:44 编辑
如果文件命名中除中文字符+英文+数字以外仅采用某些有限的键盘可见字符,如》.-_@#$[]{}',;=`~+() 这些可选字符排除了批处理脚本运行期容易‘作祟’的那些转义字符。
满足上述命名条件,就可用findstr准确识别文件名中有无中文字符,示例代码如下:- echo,abc.中文_123|findstr /irc:"[^0-9a-z _@#$\.\-\[\]{}()',;=`~+]">nul&&echo,有汉字||echo,无汉字
- echo,zxc-123.xyz|findstr /irc:"[^0-9a-z _@#$\.\-\[\]{}()',;=`~+]">nul&&echo,有汉字||echo,无汉字
- echo,中文|findstr /irc:"[^0-9a-z _@#$\.\-\[\]{}()',;=`~+]">nul&&echo,有汉字||echo,无汉字
复制代码 假设1楼的 *.pdf 文件命名满足上述条件,则可试用如下代码- @echo off
- (for /f "delims=" %%F in ('dir /b/s/a-d *.pdf') do (
- echo,%%~nF|findstr /irc:"[^0-9a-z _@#$\.\-\[\]{}()',;=`~+]">nul || echo,%%F
- ))>new.txt
- exit/b
复制代码 假设10楼的 *.pdf 文件命名也满足上述条件,则可试用如下代码- @echo off
- set newD="d:\中文名PDF目录"
- md %newD% 2>nul
- for /f "delims=" %%F in ('dir /b/s/a-d *.pdf') do (
- echo,%%~nF|findstr /irc:"[^0-9a-z _@#$\.\-\[\]{}()',;=`~+]">nul && copy /y "%%~F" %newD%
- )
- exit/b
复制代码
|