批处理查找文件夹中的一个同名文件是否包含指定字符串
如图test有N个文件夹。每个文件夹中包含一个同名文件1.txt每个文件夹中的1.txt可能编码不同,如果文件是UTF8编码的则把这个文件夹重命名附加一个UTF字样,方便...
如图test 有N个文件夹。每个文件夹中包含一个同名文件1.txt 每个文件夹中的1.txt可能编码不同,如果文件是UTF8编码的则把这个文件夹重命名附加一个UTF字样,方便区分!如果判断编码 不能实现,可以判断1.txt是否包含GBK 字样。也可以的,我下面的代码不知道为什么不行
@echo off
for /f %%i in ('dir /b/ad D:\test') do (
echo 处理文件:D:\test\%%i\312.txt
set %errorlevel%=findstr GBK D:\test\%%i\312.txt>nul
echo %errorlevel%
if %errorlevel% equ 0 (
echo 没有找到
) else (
echo 找到
)
)
pause>nul
一楼你这个是找所有的1.txt 上图中每个文件夹中还有个子文件夹include ,要查找include里面的1.txt 不然其它文件夹有1.txt可能会影响 判断
for /f %%i in ('dir /b/ad D:\test') do (
findstr "GBK" D:\test\%%i\include\312.txt>nul 2>&1 && set x=a
if "%x%"==A (
echo 重命名 D:\test\%%i 为 D:\test\%%iGBK
) else (
echo 这里不操作也可以,能操作就改成UTF 因为找出了GBK,剩下的不处理自然是UTF
)
)
我的思路是这样的,但不一定用我的代码,我代码有错误,找include下的1.txt而不是所有文件夹下的1.txt 重命名的时候,不是重命名文件,是重命名一级文件夹 展开
@echo off
for /f %%i in ('dir /b/ad D:\test') do (
echo 处理文件:D:\test\%%i\312.txt
set %errorlevel%=findstr GBK D:\test\%%i\312.txt>nul
echo %errorlevel%
if %errorlevel% equ 0 (
echo 没有找到
) else (
echo 找到
)
)
pause>nul
一楼你这个是找所有的1.txt 上图中每个文件夹中还有个子文件夹include ,要查找include里面的1.txt 不然其它文件夹有1.txt可能会影响 判断
for /f %%i in ('dir /b/ad D:\test') do (
findstr "GBK" D:\test\%%i\include\312.txt>nul 2>&1 && set x=a
if "%x%"==A (
echo 重命名 D:\test\%%i 为 D:\test\%%iGBK
) else (
echo 这里不操作也可以,能操作就改成UTF 因为找出了GBK,剩下的不处理自然是UTF
)
)
我的思路是这样的,但不一定用我的代码,我代码有错误,找include下的1.txt而不是所有文件夹下的1.txt 重命名的时候,不是重命名文件,是重命名一级文件夹 展开
1个回答
展开全部
findstr不要放在内循环里面,处理量大的话影响效率。
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b /a-d 1.txt^|findstr /i /m /f:/ "GBK"') do (
set "x=%%~i"
move /y "!x:\1.txt=!" "!x:\1.txt=!_UTF"
)
pause
更多追问追答
追问
你这个改动了子目录,是要重命名,上图1 2 3 4 改成1GBK 2GBk 3GBK
主要是两种程序弄混了。要区分开
追答
1、重命名不一定非要ren命令,move也能重命名
2、两个功能用一个程序实现不好?
3、到底是新文件夹名是改成后面加GBK,还是加UTF?
4、是重命名一级文件夹还是重命名include文件夹的上级文件夹?
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b /a-d 1.txt^|findstr /i /m /f:/ "GBK"^|findstr /i "include"') do (
set "x=%%~i"
move /y "!x:\include\1.txt=!" "!x:\include\1.txt=!UTF"
)
pause
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询