Board logo

标题: [文本处理] 批处理如何批量重命名多个文件夹下的相同子文件夹? [打印本页]

作者: netsl    时间: 2010-8-4 17:22     标题: 批处理如何批量重命名多个文件夹下的相同子文件夹?

批量重命名(一个文件夹下的)多个文件夹下的子文件下的相同文件夹

如d:\test 下的
d:\test\a\same
d:\test\b\same
d:\test\c\same
d:\test\d\same
d:\test\e\same
d:\test\f\same

注:same下面不有其它文件存在。

需要批量把same改成如:nosame

需要用到IF命令,怎样与详细的命令呢。谢谢
作者: hfg1977    时间: 2010-8-4 17:32

ren "destFolder\"
ren ""destFilename"
文件夹下有无文件都可成功.
简化你自己学习吧.
作者: netsl    时间: 2010-8-4 17:41

ren的命令我知道,我就是不会写循环,如果只是少量。我可以直接写 :
ren d:\test\a\same nosame
这要就行了。但批量怎样操作呢?

感谢提供的这两个代码:
ren "destFolder\"
ren ""destFilename"
看不太懂,能说清楚一些吗?谢谢
作者: vthsg75yjwwqawc    时间: 2010-8-4 18:08

  1. @echo off
  2. set "Folder=d:\test"
  3. set "OldName=same"
  4. set "NewName=nosame"
  5. if exist "%Folder%\%OldName%\" (
  6.     ren "%Folder%\%OldName%" "%NewName%"
  7. )
  8. for /f "delims=" %%a in (' dir /a:d /b /s "%Folder%\%OldName%" ') do (
  9.     ren "%%a" "%NewName%"
  10. )
复制代码

[ 本帖最后由 vthsg75yjwwqawc 于 2010-8-4 18:38 编辑 ]
作者: hfg1977    时间: 2010-8-4 18:18

重命名文件夹,必须先判断它是文件夹, 在最后加上"\"就是用来判断.
  1. pushd "d:\test"
  2. for /f "tokens=* delims=" %%a in ('dir /ad /s /b') do (
  3. echo %%a
  4. echo ------%%~nxa
  5. if "%%~nxa"=="same" (ren "%%a\" "nosame")
  6. )
复制代码

作者: hfg1977    时间: 2010-8-4 18:26

4楼给出的代码还是应该先判断下是否是文件夹比较安全.

[ 本帖最后由 hfg1977 于 2010-8-4 18:31 编辑 ]
作者: vthsg75yjwwqawc    时间: 2010-8-4 18:35     标题: 回复 6楼 的帖子

感谢你 5 楼的提示。 4 楼代码已经改了一个地方:
    把 if exist "%Folder%\%OldName%" 改为了 if exist "%Folder%\%OldName%\"

代码我已测试,可以重命名。

--------------------------

原帖由 hfg1977 于 2010-8-4 18:26 发表
4楼给出的代码还是应该先判断下是否是文件夹比较安全.


不需要判断的,/a:d 查找的就是文件夹。

[ 本帖最后由 vthsg75yjwwqawc 于 2010-8-4 18:38 编辑 ]
作者: netsl    时间: 2010-8-4 18:39

嗯。谢谢两位。呵呵。已经测试。可用。

[ 本帖最后由 netsl 于 2010-8-4 18:58 编辑 ]
作者: senlinzhihuo    时间: 2010-8-7 17:28

较简单的一种代码:
@echo off
set go=a b c d e f
for %%i in (%go%) do (ren d:\test\%%i\same nosame)
pause

[ 本帖最后由 senlinzhihuo 于 2010-8-7 17:30 编辑 ]




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2