2016-05-08 58 views
2

以下文件中的所有文件夹是我的尝试:集FOLDERNAME =文件夹名称:! =批量重命名含有特定模式

@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 

但我收到错误消息:该进程无法访问,因为它的文件正在被另一个进程使用。 我不是一个程序员,只是削减&粘kinda家伙,所以谢谢你的任何帮助。

所以,上面的错误当然是我试图缓冲目录(g:\ itunes \ podcasts)时修改子目录。所以以下笨重的代码确实有效,但有一个例外。

@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 

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

+0

是否正在使用.mp3文件?因为那就是那个错误信息所暗示的。 – SomethingDark

+2

关闭'echo off',看看你正在做的奇怪的事情。 –

回答

0

下面的工作,但是非常笨重......一件事是,即使在找到第一个zz_podcast之后,它仍然继续搜索文件夹。在批处理文件中执行批处理文件的想法最终可能会导致我需要转义字符的其他问题。对于第二批,我需要对下面显示的百分比符号进行编辑。如果有人能想出一种完全不同的方法,那么会更好吗?也许更优雅?

@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_,然后打开整个zz_文件夹以查看上下文中的zz_episode“