批处理查找文件夹中的一个同名文件是否包含指定字符串

如图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 重命名的时候,不是重命名文件,是重命名一级文件夹
展开
 我来答
JooKin
2015-07-01 · TA获得超过687个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:382万
展开全部

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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式