[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样以父文件夹名命名子文件夹?

想要一个BAT文件
1、以父文件夹名+子文件夹名 命名子文件夹;
2、以父文件夹名+子文件夹名 命名孙子文件且以01开始;

例:父文件夹名 武器 ,子文件夹名: 古代; 现代。

批处理后:
第一步:将子文件夹名为:武器古代;武器现代
第二步:孙子文件夹名为:武器古代01;武器现代01;
第三步:孙子文件名为:
  武器古代01-01,武器古代01-02,武器古代01-,武器古代01-03......;

  武器现代01-01,武器现代01-02,武器现代01-,武器现代01-03......。

放在哪一级运行?C:\Users\admin\Desktop\aaa什么意思?

TOP

本帖最后由 mypcl01 于 2021-8-3 22:11 编辑

您好!谢谢,能关注我的问题。
  闪退,没有变化。尝试放在各级目录里,改写成这样 f-1 "C:\Users\admin\Desktop\I:\实验0803\实验0803\新" 或f-1 "I:\实验0803\实验0803\新"都不行。希望一个不需要每次改目录的,放在父文件夹就能运行的。

我有一个单层命名的,放在文件夹下,不是在父文件夹下,重命名孙子文件夹里的文件,也是勉强使用。命名时是:文件名(1),不希望带括号,数字从01开始。自己不会改。能不能改成放在父文件夹运行,文件名不带括号,数字从01开始。
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%i in ('dir /b /ad') do (
set /a num=0
for /f %%x in ('dir /b %%i\*.*') do (
set /a num+=1
echo %%i\%%x 重命名为 %%i^(!num!^).*
ren "%%i\%%x" "%%i^(!num!^).*"
))
pause

TOP

本帖最后由 mypcl01 于 2021-8-6 00:21 编辑

谢谢,回复!
1.父文件夹\子文件夹\孙文件夹。批处理放在父文件夹下运行,父文件夹下有文件,也有子文件夹,子文件夹下有孙文件夹,孙文件夹下有文件。
2.父文件夹名;武器。子文件夹名:现代,古代。
   父文件夹下的零散文件以父文件夹名-01,父文件夹名-02......命名。例子:武器-01,武器-02......。
   子文件夹名以父文件夹名+原有的子文件夹名命名。例子:父文件夹名;武器。子文件夹名:现代,古代。子文件夹名命名后;武器现代,武器古代。
3.孙子文件夹名以上级文件夹名01;上级02....命名。例子:武器现代01,武器现代02......:武器古代01,武器古代02......。
孙子文件夹中的文件,以上级01-01,上级01-02......命名。例子:武器现代01-01,武器现代01-02......;武器现代02-01,武器现代02-02...:武器古代01-01,武器古代01-02,武器古代02-01,武器古代02-...。
本来是想用已有的一个bat命名父文件夹下的散文件,再运行您写bat的命名其他文件。
附件怎么也传不上

TOP

@echo off
for %%i in (%~dp0.) do set folder0=%%~ni
setlocal enabledelayedexpansion
set x=100
for %%i in (*) do (
set /a x+=1
ren "%%i" "%folder0%!x:~1!%%~xi"
)
for /d %%a in (*) do (
    ren "%%a" "%folder0%%%a"
    pushd "%folder0%%%a"
    set n=100
    for /d %%b in (*) do (
        set m=100
        set /a n+=1
        ren "%%b" "%folder0%%%a!n:~1!"
        for %%c in ("%folder0%%%a!n:~1!\*") do (
            set /a m+=1
            ren "%%c" "%folder0%%%a!n:~1!-!m:~1!%%~xc"
        )
        set m=100
    )
    set n=100
    popd
)
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%i in ('dir /b /ad') do (
set /a num=0
for /f %%x in ('dir /b %%i\*.*') do (
set /a num+=1
echo %%i\%%x 重命名为 %%i^-0!num!^.*
ren "%%i\%%x" "%%i^-0!num!^.*"
))
pause
加进第3、4行,还加了原有的一段,达到了预想的效果,谢谢!嘿嘿,就是连批处理命令自己也被重命名。这已经很好了,谢谢!

TOP

谢谢,受教!

TOP

返回列表