Batch file 设置foldername=!foldername:\=!批处理以重命名包含具有特定模式的文件的所有文件夹

Batch file 设置foldername=!foldername:\=!批处理以重命名包含具有特定模式的文件的所有文件夹,batch-file,windows-xp,Batch File,Windows Xp,以下是我尝试过的: @echo off REM Prefix zz_ to folders containing episodes with zz_ setlocal enabledelayedexpansion enableextensions for /r "G:\itunes\Podcasts\" %%f in (zz_*.mp3) do ( set N=%%~pf~ set N=!N:\itunes\Podcasts\=! set N=!N:\=! if exist %

以下是我尝试过的:

@echo off
REM Prefix zz_ to folders containing episodes with zz_
setlocal enabledelayedexpansion enableextensions
for /r "G:\itunes\Podcasts\" %%f in (zz_*.mp3) do (
   set N=%%~pf~
   set N=!N:\itunes\Podcasts\=!
   set N=!N:\=!
if exist %%f ren "g:%%~pf" "zz_!N!"
)
pause
但是我收到了错误消息:进程无法访问该文件,因为它正被另一个进程使用。 我不是一个程序员,只是一个剪切粘贴类的人,所以谢谢你的帮助

因此,上面的错误当然是我在尝试递归目录(g:\itunes\podcast)时修改了子目录。因此,除了一个例外,以下笨拙的代码确实有效

@echo off
setlocal enabledelayedexpansion enableextensions
REM Prefix zz_ to folders containing episodes with zz_
for /r "G:\itunes\Podcasts\" %%f in (zz_*.mp3) do (
   set foldername=%%~pf
   set foldername=!foldername:~17!
   set foldername=!foldername:\=!
   if exist %%f echo if exist %%f ren "g:%%~pf" "zz_!foldername!" >>g:\trash.bat
)
call g:\trash.bat
del g:\trash.bat

pause

它不处理包含感叹号的文件名。有什么想法吗?

下面的作品很不错,但很笨重。。。一方面,即使在找到第一个zz_播客后,它仍会继续搜索文件夹。在批处理文件中执行批处理文件的想法最终可能会给我带来其他需要转义的字符问题。这是第二批,我需要做百分比符号编辑,你看到下面。如果有人能想出一个完全不同的方法,也许更优雅一点,那该多好啊

@echo off
REM Prefix zz_ to folders containing episodes with zz_
setlocal DisableDelayedExpansion
REM The following recurses g:\itunes\podcasts looking for zz_ podcasts
for /r "G:\itunes\Podcasts\" %%f in (zz_*.mp3) DO (
set "filename=%%f"
set "filepath=%%~pf"
set "foldername=%%~pf"
REM Delayed Expansion needed here for edits to file, path & folder names
setlocal EnableDelayedExpansion
set filename2=!filename:%%=%%%%!
set filepath=!filepath:%%=%%%%!
set foldername=!foldername:~17!
set foldername=!foldername:\=!
set foldername=!foldername:%%=%%%%!
if exist "!filename!" echo if exist "!filename2!" ren "g:!filepath!" "zz_!foldername!" >>g:\trash.bat
endlocal
)
REM trash.bat has its own issues with escaped characters
call g:\trash.bat
del g:\trash.bat

这是怎么回事。当我编辑播客标签时,我经常需要“在上下文中”查看未编辑的播客,以便决定最佳的前进方向。例如,如果一个播客的标题中有“重播”,那么在删除它之前,我需要确保我有原文。因此,我临时将播客标记为zz_u,然后打开整个zz_u文件夹,查看zz_u插曲“在上下文中”

是否正在使用.mp3文件?因为这正是错误消息所暗示的。关闭
echo off
并查看您正在做的奇怪事情。