dazza92
Goto Top

Dateien mit bestimmter Endung suchen, in eine Liste schreiben, kopieren und unbenennen.

Es soll ein Verzeichnis mit allen Unterverzeichnissen durchsucht werden

Hallo,

ich würde gerne das realisieren, was im Thread Titel steht. Einen Teil habe ich schon selbst hinbekommen, bin jetzt aber ins Stocken geraten. Hier mein Code:


@echo off
setlocal
set DIR=C:\Users\admin\Desktop\test
set OUTPUTDIR=C:\results
dir /b /s *_de.properties > c:\test\test.txt
for /R %DIR% %%a in (*_de.properties) do xcopy "%%a" "%OUTPUTDIR%"


Dieser Code kopiert mir schonmal alle Dateien mit *_de.properties in mein Zielverzeichnis. Das Problem ist allerdings, das die meisten Dateien messages_de.properties heißen und in hunderten Ordern liegen. Das Batch würde also alle Dateien immer wieder überschreiben bzw hält an und fragt mich, ob ich überschreiben möchte.
Ziel ist es also die Dateien vor dem kopieren umzubenennen und ein Logfile zu erstellen, in welchem der neue Name und der alte Pfad steht, damit ich es später wieder zurückkopieren kann.

Beispiel:

Die erste messages_de.properties soll in 1_messages_de.properties unbenannt werden.
Die zweite in 2_messages_de.properties
usw.

In der Logdatei soll dann stehen:

1_messages_de.properties C:\test\1\
2_messages_de.properties C:\test\2\
usw.

Ist soetwas möglich? Wäre über jede Hilfe dankbar.
Kommentar vom Moderator Biber am Mar 21, 2012 um 08:57:20 Uhr
Dateien mit bestimmter Endung suchen, in eine Liste schreiben, kopieren und unbenennen.
Set /a rgc += 1
#803
Die erste messages_de.properties soll in 1_messages_de.properties unbenannt werden.
Set /a rgc += 1
#804

Content-Key: 182193

Url: https://administrator.de/contentid/182193

Printed on: April 23, 2024 at 21:04 o'clock

Member: mak-xxl
mak-xxl Mar 19, 2012 at 15:35:42 (UTC)
Goto Top
Moin daZza92,

das könnte folgende Batchdatei erledigen:

@echo off & setlocal enabledelayedexpansion
set fext=.xls
chcp 1252 > NUL
set /a i=1
for /f "delims=" %%f in ('dir /s /b *%fext%') do echo "%%f" "C:\Test\datei_!i!%fext%" >> cplist.dat & set /a i+=1  
chcp 850
for /f "delims=" %%f in (cplist.dat) do xcopy.exe %%f  

Die datei<cplist.dat> ist Auftragsliste für den Copyjob und Logbuch zugleich. Das VZ "C:\Test" muss vorhanden sein. Rest anpassen.

Viel Erfolg und freundliche Grüße von der Insel - Mario
Member: daZza92
daZza92 Mar 19, 2012 at 15:48:54 (UTC)
Goto Top
Danke, habe s mittlerweile aber mit folgendem Skript geschafft:

@echo off
setlocal enabledelayedexpansion
set "SOURCEDIR=C:\Users\admin\Desktop\test"
set "OUTPUTDIR=C:\results"
set num=0
pushd "%sourcedir%"
for /f "delims=" %%a in ('dir /b /s /a-d *_de.properties') do (
set /a num=num+1
set n=0000!num!
set n=!n:~-4!
copy "%%a" "%OUTPUTDIR%\!n!_%%~nxa" >nul
"%outputdir%\log.txt" echo "!n!_%%~nxa" "%%~dpa"
)
popd