Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Script - Batch File zum Abarbeiten von Dateien aus einem TXT-File

Mitglied: shakky4711

shakky4711 (Level 1) - Jetzt verbinden

01.01.2008, aktualisiert 04.01.2008, 14413 Aufrufe, 6 Kommentare

Hallo, ich brauche ein Windows Script um folgenden Fall zu lösen:

In einem TXT File ist eine Liste von Dateien die in einem Ordner liegen

1source/
1source/ordner1/
1source/ordner1/hjh.exe
1source/ordner1/osha1.exe

Die Dateien in dieser Liste sollen nun einfach in einen anderen Ordner verschoben werden.

ACHTUNG, es sind aber auch noch x andere Dateien in dem Ordner, es dürfen nur die in der Liste erscheinenden Dateien bearbeitet werden.

Um das ganze noch flexibel auf verschiedenen Rechner zu nutzen sollten die vollständigen Pfade z.b. "N:\daten\xxx\xxx\quelle" zu den Ordnern in eine Variable z.B. "Quelle" und "Archiv" festgelegt werden können.
Klingt eigentlich simpel aber alle Lösungen die ich gefunden habe waren für Linux und ich habe es nicht hinbekommen auf die Windows Shell zu konvertieren.

OS ist Windows 2000

Vielen Dank für Eure Hilfe.
Mitglied: bastla
01.01.2008 um 23:52 Uhr
Hallo shakky4711 und willkommen im Forum!

Vorweg zwei Fragen zu der Liste:

1) Wird zur Trennung der Ordnerebenen tatsächlich "/" verwendet, oder enthält die Liste doch "\"?

2) Da offensichtlich nicht nur Dateien, sondern auch die einzelnen Ordner in der Liste enthalten sind: Endet jeder Ordner mit dem Trennzeichen lt Frage 1), sodass also nur nicht mit dem Trennzeichen endende Zeilen zu verschiebende Dateien repräsentieren?

Grüße
bastla
Bitte warten ..
Mitglied: Dani
02.01.2008 um 00:04 Uhr
Abend shakky,
das eigentliche Problem ist, dass in der File auch Verzeichnisnamen an sich drin stehen. Somit würde beim Versuch des Verschiebens der Ordner verschoben bzw. ein Fehler erzeugt. Dies ist aber eine vermeidbare Fehlerquelle!

Ich würde es mal so probieren:
01.
@echo off 
02.
 
03.
rem Variablen 
04.
set src_dir=D:\test 
05.
set dest_dir= E:\backup 
06.
set txt_file=C:\inis\batch.txt 
07.
 
08.
for /f "delims=" %%a in ('type "%txt_file%" ^| findstr /i "[^\\]$"') do move /y "%src_dir%\%%a" "%dest_dir%"
Somit wird jede Datei in das Verzeichnis "e:\backup" verschoben, egal aus welchem Quellverzeichnis diese kommt. Mit dem Schalter "/y" bei "move" wird das Überscheiben automatisch mit "Yes" beantwortet.
Durch den reg. Ausdruck im findstr Befehl wird sichergestellt, dass wirklich nur Dateien ausgeben werden. Dadurch das die Verzeichnisse alle mit "\" enden, habe ich den Filter darauf eingestellt.

@bastla
Sry, warst wohl schneller. Aber deine Fragen sind berechtigt! Ich habe das als Backslash gesehen. Der reg. Ausdruck hat mich aufgehalten. Sowas braucht man schließlich nicht jeden Tag.


Grüße
Dani

P.S. Unter Windows werden die Verzeichnisse mit "\" (Backslash) angeben - Linux: Slash.
Bitte warten ..
Mitglied: bastla
02.01.2008 um 00:43 Uhr
@Dani

... dafür hast Du die elegantere Lösung ...

Der Schalter "/y" für den "move"-Befehl ist allerdings bei Verwendung in einem Batch unnötig - es wird auch ohne überschrieben.
@shakky4711

Noch eine Frage: Soll die Ordnerstruktur beibehalten werden (Pfad der Datei daher nach dem Verschieben zB "D:\Test\Archiv\1source\ordner1\hjh.exe")?

Falls ja, sollte es (unter zusätzlicher Vorwegnahme Deiner Antworten auf die ersten beiden Fragen mit 1) "\" und 2) "ja") etwa so gehen:
01.
@echo off & setlocal 
02.
set "Source=N:\daten\xxx\xxx\quelle" 
03.
set "Archiv=D:\Test\Archiv" 
04.
set "List=D:\Liste.txt" 
05.
 
06.
for /f "usebackq delims=" %%i in ("%List%") do call :ProcessFile "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "S=%Source%\%~1" 
11.
if %S:~-1%==\ goto :eof 
12.
set "T=%Archiv%\%~p1" 
13.
if not exist "%T%" md "%T%" 
14.
move "%S%" "%T%"
Grüße
bastla
Bitte warten ..
Mitglied: shakky4711
03.01.2008 um 22:09 Uhr
SUPER, beide Scripte laufen prima, auch mit Leerzeichen in den Dateinamen...

Zu den Fragen, in der Liste sind die Pfade wirklich mit einem "/". Die Liste wird durch rsync unter Cygwin mittels Schalter --dry-run generiert, anschließend mit unxutils in die notwendige Form zurechtgestutzt.

Die einzigste Modifikation die ich jetzt noch machen musste waren die "/" durch "\" im Text File zu ersetzen.

Nochmals vielen vielen Dank, hab mir schon endlose Stunden um die Ohren geschlagen.

Gruß
Shakky4711
Bitte warten ..
Mitglied: Biber
04.01.2008 um 00:01 Uhr
Moin Shakky4711,

Du kannst natürlich auch die "/" in der Textdatei stehenlassen und in bastlas Schnipsel noch eine Zeile mehr einfügen:
01.
.... 
02.
for /f "usebackq delims=" %%i in ("%List%") do call :ProcessFile "%%i" 
03.
goto :eof 
04.
 
05.
:ProcessFile 
06.
set "S=%Source%\%~1" 
07.
:: jetzt die neue Zeile (==ersetze alle "/" in %S% durch "\") 
08.
set S=%S:/=\% 
09.
....
Da das aber nur Kosmetik ist: ich würde gern auch den Thread schließen.
Aber erst nachdem Du ihn als "gelöst" markiert hast.

Grüße
Biber
Bitte warten ..
Mitglied: shakky4711
04.01.2008 um 21:27 Uhr
Nochmals vielen Dank an Euch alle!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Welche Codierung für txt files um in einer batch Datei richtig aufgerufen werden zu können?

Frage von patme1Batch & Shell3 Kommentare

Hi! Ich habe eine txt Datei, welche ich in einer batch file einlesen möchte. In dieser sind Sonderzeichen, wie ...

Batch & Shell

Batch File zum Auslesen einer Datei

gelöst Frage von Marcel1989Batch & Shell9 Kommentare

Hallo, Ich scheibe momentan ein Anmeldescript als batch mit dem Aufruf von VBS dateien. Hierfür haben wir bereits gruppen ...

Batch & Shell

PDF Datei umbennen aus TXT File ?

gelöst Frage von BotpennerBatch & Shell18 Kommentare

Hi, ich habe folgendes Problem. Ich besitze mehrere PDF-Dateien. Diese haben aktuell als Dateinamen eine belibige 6 Stellige Nummer. ...

Sonstige Systeme

Daten aus txt-Files sammeln

gelöst Frage von MegaGigaSonstige Systeme16 Kommentare

Moin :-) Erstmal: Ich habe kein gescheites Unterforum dafür gefunden, falls ihr ein besseres findet bin ich froh darum ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 StundeErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 3 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 3 StundenMicrosoft3 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1025 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware10 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...