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, 14675 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
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 7 StundenHumor (lol)

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 9 StundenExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 1 TagErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 1 TagVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server48 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS16 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...

Windows Server
Windows Server per Web auf Daten zugreifen und verwalten
Frage von matze2090Windows Server16 Kommentare

Hallo, ich würde gerne von außen auf meinem Windows Server zugreifen um auf meine Daten zu verwalten. Meine frage ...