找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20536|回复: 4

[文件操作] BAT脚本批量修改文件名,如何实现子文件夹内也修改

[复制链接]
发表于 2023-4-2 10:47:03 | 显示全部楼层 |阅读模式
  1. @echo off
  2. set "fd=%~dp0"
  3. for /f "delims=" %%a in ("%fd:~,-1%") do set "fd=%%~nxa"
  4. for /f "delims=" %%a in ('dir /a-d/b^|find /v "%~nx0"') do (
  5.     echo;"%%a" --^> "%fd%_%%~nxa"
  6.     ren "%%a" "%fd%-%%~nxa"
  7. )
  8. echo;Any question +%@%%@% %n%
复制代码
实现了当前文件夹下将当前文件夹内所有文件根据当前文件夹名称修改文件名的功能,可以是如何实现子文件夹内的文件也根据文件夹当前所在目录名修改文件名呢?!
发表于 2023-4-2 10:54:21 | 显示全部楼层
回复 1# 无我居士


    for /f "delims=" %%a in ('dir /a-d/b/s^|find /v "%~nx0"') do (


加个 /s
 楼主| 发表于 2023-4-2 11:01:23 | 显示全部楼层
加过了的,但是得到的是用根目录的文件夹名修改文件名
我需要的是如果根文件夹名是—123  子文件夹名是—456,那么“123”内的文件名前加123,“456”内的文件名前加456
发表于 2023-4-2 18:32:11 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /a-d ^| find /v "%~0"') do (
  4.         set "folderName=%%~dpi"
  5.         set "folderName=!folderName:~0,-1!"
  6.         call :1 "!folderName!"
  7.         ren "%%i" "!folderName!%%~nxi"
  8. )
  9. endlocal & pause & exit
  10. :1
  11. set "folderName=%~nx1"
  12. exit /b
复制代码

评分

参与人数 1技术 +1 收起 理由
无我居士 + 1 感谢分享

查看全部评分

发表于 2023-4-3 00:41:04 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /s /a-d ^| find /v "%~0"') do (
  3.      for /f "delims=" %%j in ("%%~fnxi\..") do ren "%%i" "%%~nj%%~nxi"
  4. )
  5. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
无我居士 + 1 想不到尽可以如此简洁!
77七 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:41 , Processed in 0.020844 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表