Ce script (en plus de la recherche de fichiers en double) renomme les fichiers pour ne pas inclure de caractères spéciaux (dans un seul dossier). J'ai toujours des problèmes quand le nom de fichier a des caractères comme “
et ”
. J'ai essayé d'ajouter cela dans le delayedexpansion
et aussi à l'extérieur sans succès.batch: échappement de caractères spéciaux comme "et" dans une variable
@echo off
echo "%~1" | find /i "system volume information" >nul && exit /b
echo "%~1" | find /i "s-1-5-21-3" >nul && exit /b
echo "%~1" | find /i "recycle" >nul && exit /b
cd /d %1 2>nul
if /i not "%~1"=="%cd%" echo cannot access %~n1 && exit /b
for %%v in (*) do set "original=%%~nxv" & call :validate
for /f "delims=" %%v in ('dir /b /a-d') do set "compare=%cd%\%%v" & call :detection
exit /b
:validate
:: add handling of “ and ”
set "newtitle=%original:!=%"
set "newtitle=%newtitle:”=%"
set "newtitle=%newtitle:&=and%"
setlocal enabledelayedexpansion
set "newtitle=!newtitle:%%= percent!"
setlocal disabledelayedexpansion
if not "%original%"=="%newtitle%" ren "%original%" "%newtitle%" && echo validated %newtitle%
goto next
:detection
:: this extrapolates %string% from beginning of filename
call d:\other\scripts\lootname.cmd "%compare%" data
set count=0
for %%v in ("%string%*") do set /a "count+=1"
for %%v in ("%string%*") do if not "%count%"=="1" echo "%%v"
:next
Un nom de fichier ne peut pas avoir de caractères comme ** "** et **" ** – Compo
Eh bien youtube downloader enregistre avec succès ces noms de fichiers sur mon disque NTFS. et maintenant que j'ai essayé je peux aussi. Je pense que c'est juste le droit '' '' qui sont illégaux – bricktop
@Compo Pourquoi est-ce que vous pensez ainsi? Je viens de mettre votre phrase exacte dans un nom de fichier, mais le batch n'est pas l'environnement idéal pour gérer ces caractères. – LotPings