67800
Goto Top

Automatische Dateiumbenennug aus eingabedatei?

Hallo,

ich habe eine txt file in der mehrere Dateipfade zu verschiedenen Dateien gespeichert sind zb.:

E:\Technik\Programme\brightmail\BAS_AV_551\BAS\Data1.cab
E:\Technik\Programme\HP_ThinClients\HP Automation\neu\T3492-15003\hpccm1.cab
usw.


Nun sollte ich es irgendwie schaffen automatisch diese Pfade auszulesen und an jede Datei "_defunct" anhängen, dass also alle Dateien physikalisch als

E:\Technik\Programme\brightmail\BAS_AV_551\BAS\Data1.cab_defunct
E:\Technik\Programme\HP_ThinClients\HP Automation\neu\T3492-15003\hpccm1.cab_defunct

vorhanden sind.

Hat da jemand eine Idee wie ich das unter Windows umsetzen kann? Mit der bash wärs ja kein problem face-smile

mfg

DooMRunneR

Content-ID: 92845

Url: https://administrator.de/forum/automatische-dateiumbenennug-aus-eingabedatei-92845.html

Ausgedruckt am: 22.04.2025 um 13:04 Uhr

miniversum
miniversum 24.07.2008 um 14:37:30 Uhr
Goto Top
Angenommen die Liste steht in der datei "Name.txt" untereinander dann geht das an der Eingabeaufforderung so:
FOR /F "delims=" %i in (Name.txt) do ren "%i" "%~nxi_defunct"  
67800
67800 24.07.2008 um 15:18:53 Uhr
Goto Top
Hat einwandfrei funktioniert, vielen dank.

Jetzt kommen jedoch noch Ordnernamen ala

E:\Technik\Admin\ntreskit40\

ebenfalls in einer .txt file.

Kann ich an diese Ordner auch ein _defunct dranhängen, der obere Befehl geht dort nicht, zu beachten ist hierbei auch das wirklich jeder Eintrag in dieser Liste mit Ordnern mit "\" endet.

mfg

DooMRunneR
miniversum
miniversum 24.07.2008 um 18:36:04 Uhr
Goto Top
Da würd ichs dann in ner Batch Datei so versuchen (ungetestet):
@echo off
FOR /F "delims=" %%i in (Name.txt) do call:doRename "%%i"  
goto:eof

:doRename
set "name=%~1"  
if %name:~-1% equ "\" (  
set "name=%name:~-1%"  
set "newname=%name:~-1%_defunct"  
) else (
set "newname=%~nx1_defunct"  
)
ren "%name%" "%newname%"  
goto:eof
bastla
bastla 24.07.2008 um 19:00:48 Uhr
Goto Top
Hallo DooMRunnerR und miniversum!

Eine etwas angepasste Version:
@echo off & setlocal
FOR /F "delims=" %%i in (Name.txt) do call:doRename "%%i"  
goto:eof

:doRename
set "name=%~1"  
if "%name:~-1%" equ "\" set "name=%name:~,-1%"  
for /f "delims=" %%a in ("%name%") do set "newname=%%~nxa_defunct"  
ren "%~1" "%newname%"  
goto:eof
Grüße
bastla