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, 14798 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
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 1 TagMicrosoft4 Kommentare

Da diese Infos scheinbar unerwünscht sind, habe ich diese wider gelöscht.

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 1 TagSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 1 TagSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 2 TagenHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen40 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple25 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic19 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

TK-Netze & Geräte
Low budget TK-Anlage für KMU
Frage von HeinklugTK-Netze & Geräte16 Kommentare

Hallo Admins, ich bin auf der Suche nach eine kostengünstigen Telefonanlage für mein kleines Büro mit 4-5 Mitarbeitern. Dabei ...