[BAT] Suppr dans un .txt d'une chaine de caractére si le fichier existe pas
SAITO_
Messages postés
21
Statut
Membre
-
barnabe0057 Messages postés 17074 Statut Contributeur -
barnabe0057 Messages postés 17074 Statut Contributeur -
Bonjour tout le monde!
J'ai un probléme concernant un script bat. J'ai un programme fonctionnel qui me permet de renommer des fichiers PDF avec Nom_jj-mm-aaaa. Une fois que le fichiers est renommé je stock son nom dans un fichiers texte. Sauf que j'ai fait une condition pour évité les doublons. Il check dans le fichier BDD.txt si la chaine de caractére existe. Si un utilisateur supprime sans faire exprés le fichier, il reste en memoire dans le BDD.txt et ne peut plus etre renommé je voudrais donc supprimé si il existe plus dans perdre la mise en page du .txt merci d'avance!
voila le code:
voila le .txt (exemple)
J'ai un probléme concernant un script bat. J'ai un programme fonctionnel qui me permet de renommer des fichiers PDF avec Nom_jj-mm-aaaa. Une fois que le fichiers est renommé je stock son nom dans un fichiers texte. Sauf que j'ai fait une condition pour évité les doublons. Il check dans le fichier BDD.txt si la chaine de caractére existe. Si un utilisateur supprime sans faire exprés le fichier, il reste en memoire dans le BDD.txt et ne peut plus etre renommé je voudrais donc supprimé si il existe plus dans perdre la mise en page du .txt merci d'avance!
voila le code:
@echo off
cd D:\Users\xxxxx\Desktop\Outils STAGE Informatique\partage
setlocal enabledelayedexpansion
for %%a in (*.pdf) do (
for /f "tokens=1 delims= " %%b in ('echo %%~ta') do (
set "$date=%%b"
set "$date=!$date:/=-!"
findstr /m %%~na "D:\Users\xxxxx\Desktop\Outils STAGE Informatique\Script\BDD.txt" && echo fichier deja renomme || (ren "%%a" "%%~na_!$date!.pdf" & echo %%~na_!$date!.pdf >> "D:\Users\xxxxx\Desktop\Outils STAGE Informatique\Script\BDD.txt")
)
voila le .txt (exemple)
test1_19-04-2018.pdf
test2_09-10-2017.pdf
test3_25-09-2018.pdf
A voir également:
- [BAT] Suppr dans un .txt d'une chaine de caractére si le fichier existe pas
- Creer un fichier .bat - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Caractère ascii - Guide
3 réponses
Essaie comme ça :
@echo off
set script=%USERPROFILE%\Desktop\Outils STAGE Informatique\Script
cd %USERPROFILE%\Desktop\Outils STAGE Informatique\partage
setlocal enabledelayedexpansion
for /r %%a in (*.pdf *.jpg *.png) do (
for /f "tokens=1 delims= " %%b in ('echo %%~ta') do (
set "$date=%%b"
set "nouveaunom=%%~na_!$date:/=-!%%~xa"
findstr /C:"%%~na" "%script%\BDD.txt" >nul || (ren "%%~a" "!nouveaunom!" & echo.!nouveaunom! >>"%script%\BDD.txt")
)
)
for /f "usebackq delims=" %%A in ("%script%\BDD.txt") do if not exist "%%~A" (set "liste=!liste! %%~nA")
for /f "tokens=1,* delims=:" %%A in ('2^>nul findstr /V /N "!liste!" "%script%\BDD.txt"') do echo.%%B >>"%script%\BDD2.txt"
if exist "%script%\BDD2.txt" (type "%script%\BDD2.txt" >"%script%\BDD.txt" & del "%script%\BDD2.txt")
pause
Bonjour,
Tu ne peux pas directement supprimer une partie d'un fichier texte, il faut reconstruire le ficher texte en excluant cette partie, ce qui est plutôt simple à faire.
Tu ne peux pas directement supprimer une partie d'un fichier texte, il faut reconstruire le ficher texte en excluant cette partie, ce qui est plutôt simple à faire.
@echo off set script=%USERPROFILE%\Desktop\Outils STAGE Informatique\Script cd %USERPROFILE%\Desktop\Outils STAGE Informatique\partage setlocal enabledelayedexpansion for /f "delims=" %%a In ('dir /ad /b /s "C:\Users\%username%\Desktop\Outils STAGE Informatique\partage"') Do ( for /r %%a in (*.pdf *.jpg *.png) do ( for /f "tokens=1 delims= " %%b in ('echo %%~ta') do ( set "$date=%%b" set "nouveaunom=%%~na_!$date:/=-!%%~xa" findstr /C:"%%~na" "%script%\BDD.txt" >nul || (ren "%%~a" "!nouveaunom!" & echo.!nouveaunom! >>"%script%\BDD.txt") ) cd %%a ) ) for /f "usebackq delims=" %%A in ("%script%\BDD.txt") do if not exist "%%~A" (set "liste=!liste! %%~nA") for /f "tokens=1,* delims=:" %%A in ('2^>nul findstr /V /N "!liste!" "%script%\BDD.txt"') do echo.%%B >>"%script%\BDD2.txt" if exist "%script%\BDD2.txt" (type "%script%\BDD2.txt" >"%script%\BDD.txt" & del "%script%\BDD2.txt")Sa modifie les fichiers dans les sous répertoires mais sa modifie indéfiniment
@echo on set script=%USERPROFILE%\Desktop\Outils STAGE Informatique\Script cd %USERPROFILE%\Desktop\Outils STAGE Informatique\partage setlocal enabledelayedexpansion for /r %%a in (*.pdf *.jpg *.png) do ( for /f "tokens=1 delims= " %%b in ('echo %%~ta') do ( set "$date=%%b" set "nouveaunom=%%~na_!$date:/=-!%%~xa" findstr /C:"%%~na" "%script%\BDD.txt" >nul || (ren "%%~a" "!nouveaunom!" & echo.!nouveaunom!>>"%script%\BDD.txt") ) ) for /f "usebackq delims=" %%A in ("%script%\BDD.txt") do if not exist "%%~A" (set "liste=!liste! %%~nA") for /f "tokens=1,* delims=:" %%A in ('2^>nul findstr /V /N "!liste!" "%script%\BDD.txt"') do echo.%%B >>"%script%\BDD2.txt" if exist "%script%\BDD2.txt" (type "%script%\BDD2.txt" >"%script%\BDD.txt" & del "%script%\BDD2.txt") pauseJ'ai compris pour quoi sa renomme deux fois, il ne m'écrit pas le nom du fichier renommé présent dans le sous dossier , en mettant le echo sur on il passe deux fois le fichier ... bizzare