2016-05-08 1 views
2

Voici ce que j'ai essayé:set foldername = foldername:! = Lot de renommer tous les dossiers contenant des fichiers ayant un motif spécifique

@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 

Mais je reçu le message d'erreur: Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus. Je ne suis pas un programmeur par tous les moyens, juste une coupe & pâte un gars, donc merci pour toute aide.

Donc, ce qui ne va pas avec ce qui précède est bien sûr que je modifie les sous-répertoires en essayant de recurber le répertoire (g: \ itunes \ podcasts). Donc, le code maladroit suivant fonctionne, à une exception près.

@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 

Il ne gère pas les noms de fichiers contenant des points d'exclamation. Des pensées?

+0

Les fichiers .mp3 sont-ils utilisés? Parce que c'est ce que suggère ce message d'erreur. – SomethingDark

+2

Éteignez «écho» et voir les choses bizarres que vous faites. –

Répondre

0

Les travaux suivants, mais est très maladroit ... pour une chose, il continue à chercher un dossier même après avoir trouvé le 1er zz_podcast. Et l'idée d'exécuter un fichier de commandes dans un fichier batch peut éventuellement me causer d'autres problèmes avec les caractères qui doivent être échappés. C'est pour le 2ème lot dont j'ai besoin pour faire les modifications de signe de pourcentage que vous voyez ci-dessous. Serait bien si quelqu'un pouvait penser à une approche complètement différente, une plus élégante peut-être?

@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 

De quoi s'agissait-il? Lorsque je modifie des balises podcast, j'ai souvent besoin de voir le podcast non édité «en contexte» afin de décider de la meilleure façon d'avancer. Par exemple, si un podcast a «rediffusé» dans son titre, alors je dois m'assurer que j'ai l'original avant de le supprimer. Donc, je balise temporairement les podcasts en tant que zz_, puis j'ouvre tout le dossier zz_ pour voir l'épisode zz_ dans le contexte.