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

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

  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%
复制代码
实现了当前文件夹下将当前文件夹内所有文件根据当前文件夹名称修改文件名的功能,可以是如何实现子文件夹内的文件也根据文件夹当前所在目录名修改文件名呢?!

回复 1# 无我居士


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


加个 /s

TOP

加过了的,但是得到的是用根目录的文件夹名修改文件名
我需要的是如果根文件夹名是—123  子文件夹名是—456,那么“123”内的文件名前加123,“456”内的文件名前加456

TOP

  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

评分人数

bat小白,请多指教!谢谢!

TOP

  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

评分人数

TOP

返回列表