Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
Kommentar vom Moderator Biber am 19.11.2010 um 11:20:58 Uhr
Bereits gelösten Beitrag verschoben von "Tools & Utilities" nach "Batch & Shell".
GELÖST

Batch Frage - alle Dateien in einem Ordner einlesen ändern dann einmal kopieren und dann verschieben

Frage Entwicklung Batch & Shell

Mitglied: tulekparson

tulekparson (Level 1) - Jetzt verbinden

18.11.2010, aktualisiert 19.11.2010, 5914 Aufrufe, 10 Kommentare

Hallo Forum,
Ich weiß, daß mein Problem relativ trivial ist, allein mir fehlt der Durchblick.
Ich möchte Inventurdateien in einem Ordner einlesen, diese von Leerzeilen befreien und letztendlich
einmal in einen Sicherungsordner kopieren und zu guter Letzt in den eigentlichen Inventurordner verschieben.

So:

In einem Ordner A liegen Inventurdateien vom Namensformat sehen die wie folgt aus:

01.
abteilunng.inventurnr.mde
also zum Beispiel
01.
schreibwaren.1052.mde
Ich brauche eine Batchdatei die folgendes leistet:

  • Alle Dateien in Ordner A einlesen
  • Die gefundenen Dateien von Leerzeilen befreien
evtl. mit
01.
findstr .$^ alter Name>neuer Name
?
  • Die veränderten Dateien (die idealerweise noch immer ihren Dateinamen behalten haben) in einen Ordner B kopieren
  • Und dann die veränderten Dateien in Ordner C verschieben.

Das Verzeichnis sollte nach dem Batchaufruf leer sein.

Das müsste mit einer Batch zu schaffen sein, aber mein Kopf meldet gerade permanent TILT zumal ich hier nebenher
noch vorweihnachtlichen Kundenverkehr habe...
Wer erbarmt sich und hilft mir in meiner Not?

Ich bin Euch ewig dankbar für sachdienliche Hinweise!
Mitglied: micneu
18.11.2010 um 17:08 Uhr
* Die veränderten Dateien (die idealerweise noch immer ihren Dateinamen behalten haben) in einen Ordner B kopieren
  • Und dann die veränderten Dateien in Ordner C verschieben.

warum sollen die datein einmal in B und dann nochmal in C gespeichert werden?
sind die verzeichnisse schon angelegt?

gruß michael
Bitte warten ..
Mitglied: tulekparson
18.11.2010 um 17:11 Uhr
Die Verzeichnisse sind vorhanden.

Die Warenwirtschaft löscht die Dateien nach dem Einlesen, um Katastrophen zu verhindern
sichern wir alle Inventur(roh)daten.
Bitte warten ..
Mitglied: 60730
18.11.2010 um 17:43 Uhr
Servus,

  • Alle Dateien in Ordner A einlesen
  • Die gefundenen Dateien von Leerzeilen befreien
  • Die veränderten Dateien (die idealerweise noch immer ihren Dateinamen behalten haben) in einen Ordner B kopieren
01.
for /f %%a in ('dir /b C:pfad1*.mde') do ( 
02.
		for /f %%l in (%%a) do if not "%%l"=="" echo %%l>>C:pfad2\%%a 
03.
)
  • Und dann die veränderten Dateien in Ordner C verschieben.
TILT meldet da auch mein Kopf..
Außer du meinst eine zusätzliche Zeile 3 - die da sinngemäß:
copy C:pfad1\%%a C:pfad2\%%a
lauten soll....


Sollte aber auch zu lösen sein...

Wobei ich das Forum mal wieder ein Problem mit [AltGr] [9][2] habe


Gruß
Bitte warten ..
Mitglied: tulekparson
18.11.2010 um 18:10 Uhr
Leerzeilen löschen funktioniert, aber das kopieren klappt nicht
"Datei xy konnte nicht gefunden werden"
Bitte warten ..
Mitglied: bastla
18.11.2010 um 18:39 Uhr
Hallo tulekparson und T-Mo!

Das Ganze etwas variiert (und hoffentlich auch performanter):
01.
for %%a in ("C:\Pfad1\*.mde") do ( 
02.
    findstr /v "^$" "%%a">"C:\Pfad2\%%~nxa" 
03.
    copy "C:\Pfad2\%%~nxa" "C:\Pfad3">nul && del "%%a" 
04.
)
Grüße
bastla
Bitte warten ..
Mitglied: micneu
18.11.2010 um 18:58 Uhr
ich habe hier die ungetestete powershell version:

01.
#   ************************************************************** 
02.
#    einmal auf der powershell ausgeführt werden 
03.
#     "Set-ExecutionPolicy Unrestricted" 
04.
#   ************************************************************** 
05.
#     
06.
#   ************************************************************** 
07.
#   * Erstellt M.N. - POWERSHELL / Entwicklung   18.11.2010      * 
08.
#   ************************************************************** 
09.
 
10.
$QUELLE = "c:Temp" 
11.
$ZIEL = "c:\Temp2010" 
12.
$ZIEL2 = "c:\Temp2010\11" 
13.
 
14.
$FILE = Get-ChildItem $QUELLE -filter '*.txt' 
15.
foreach ( $i in $FILE ) {     
16.
    $TEXT = Get-Content "$QUELLE\$i" | Out-String 
17.
    $TEXT2 = $TEXT  -replace '\s\B','' #| Out-String 
18.
    Move-Item -path "$QUELLE\$i" -destination "$ZIEL\$i" 
19.
    $TEXT2 > "$ZIEL2\$i" 
20.
    }
gruß michael
Bitte warten ..
Mitglied: micneu
18.11.2010 um 19:20 Uhr
und hier die getestet powershell version:

01.
#   ************************************************************** 
02.
#    einmal auf der powershell ausgeführt werden 
03.
#     "Set-ExecutionPolicy Unrestricted" 
04.
#   ************************************************************** 
05.
#     
06.
#   ************************************************************** 
07.
#   * Erstellt M.N. - POWERSHELL / Entwicklung   18.11.2010      * 
08.
#   ************************************************************** 
09.
 
10.
$QUELLE = "c:\Temp" 
11.
$ZIEL = "c:\Temp2010" 
12.
$ZIEL2 = "c:\Temp2010\11" 
13.
 
14.
$FILE = Get-ChildItem $QUELLE -filter '*.txt' 
15.
foreach ( $i in $FILE ) {     
16.
    $TEXT = Get-Content "$QUELLE\$i"     
17.
    $TEXT2 = $TEXT | Where-Object { $_ -ne "" } 
18.
    Move-Item -path "$QUELLE\$i" -destination "$ZIEL\$i" 
19.
    $TEXT2 > "$ZIEL2\$i"    
20.
    }
gruß michael
Bitte warten ..
Mitglied: tulekparson
19.11.2010 um 11:14 Uhr
Super,

Vielen Dank an alle die sich an meinem Problem versucht haben.
Aufgrund eines gewissen Zeitdrucks habe ich mich für Bastlas Lösung entschieden.

Läuft wunderbar

Dank gebührt aber auch TimoBeil und micneu, die sich ebenfalls eine Lösung einfallen haben lassen. Ich weiß es durchaus zu schätzen, daß Ihr Euch einfach mal rangesetzt habt und mir aus der Patsche geholfen habt.

Zu micneu:

Ich habe noch nicht mit Powershell gearbeitet und da ich den Code u.U. anpassen muss habe ich mir das nicht weiter angeguckt, werde ich aber sicherlich mal nach Weihnachten tun.

Wenn es Eure Zeit zulässt würde ich gern mal den Code von Bastla erklärt haben.

Ich weiß das > quasi eine Pipe (Unix) ist, richtig?
eine for-Schleife sehe ich auch.
Aber diese %% und %%~ Konstrukte sind wahrscheinlich der Kasus Knaxus. Kann mir das mal jemand übersetzen?

Danke.
Bitte warten ..
Mitglied: bastla
19.11.2010 um 11:50 Uhr
Hallo tulekparson!
Kann mir das mal jemand übersetzen?
Für die paar Zeilen habe ich auch selbst Zeit ...
for %%a in ("C:\Pfad1\*.mde") do (
Schleife, um alle *.mde-Dateien durchzugehen - diese stehen innerhalb der Schleife als "%%a" zur Verfügung.
    findstr /v "^$" "%%a">"C:\Pfad2\%%~nxa"
Mit "^" für "Zeilenbeginn und "$" für Zeilenende (und nix dazwischen) lassen sich die Leerzeilen in der Datei "%%a" finden und per "/v" ausfiltern (ähnelt damit Deinem Ansatz).
Das Ergebnis wird (per Ausgabeumleitung mit ">") in eine neue Datei geschrieben, wobei Dateiname und - extension von der ursprünglichen Datei übernommen werden (Näheres dazu findest Du am Ende der Online-Hilfe ("for /?").
    copy "C:\Pfad2\%%~nxa" "C:\Pfad3">nul && del "%%a"
Die im "Pfad2" neu erstellte Datei enthält jetzt keine Leerzeilen mehr und kann daher (unter dem gleichen Namen, daher genügt die Angabe des Pfades) in den "Pfad3" kopiert werden (wobei die Meldung " 1 Datei(en) kopiert." ja nicht wirklich so aussagekräftig ist, dass sie auch ausgegeben werden müsste - daher: weg damit in Richtung "nul"-Device).

Wenn der Kopiervorgang ohne Fehler endet (deshalb die bedingte Verknüpfung mit "&&" anstelle von "&") kann die Originaldatei gelöscht werden.
)
Ende der Schleife

Grüße
bastla
Bitte warten ..
Mitglied: tulekparson
19.11.2010 um 16:35 Uhr
Fantastisch

Wieder bin ich ein bisschen schlauer!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

VB for Applications
gelöst Mehrere CSV Dateien aus verschiedenen Ordner einlesen via VBA (12)

Frage von mtufangil zum Thema VB for Applications ...

Batch & Shell
gelöst Mittels Batch alle .txt Dateien eines Verzeichnises ändern (10)

Frage von mttspeedy zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...