Board logo

标题: [文件操作] BAT脚本批量修改文件名,如何实现子文件夹内也修改 [打印本页]

作者: 无我居士    时间: 2023-4-2 10:47     标题: 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%
复制代码
实现了当前文件夹下将当前文件夹内所有文件根据当前文件夹名称修改文件名的功能,可以是如何实现子文件夹内的文件也根据文件夹当前所在目录名修改文件名呢?!
作者: ww0000    时间: 2023-4-2 10:54

回复 1# 无我居士


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


加个 /s
作者: 无我居士    时间: 2023-4-2 11:01

加过了的,但是得到的是用根目录的文件夹名修改文件名
我需要的是如果根文件夹名是—123  子文件夹名是—456,那么“123”内的文件名前加123,“456”内的文件名前加456
作者: 77七    时间: 2023-4-2 18:32

  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
复制代码

作者: terse    时间: 2023-4-3 00:41

  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
复制代码





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