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
GELÖST

Immer wieder probs mit der batch-Datei

Frage Entwicklung Batch & Shell

Mitglied: MmarKuss

MmarKuss (Level 1) - Jetzt verbinden

01.02.2013, aktualisiert 25.01.2014, 2229 Aufrufe, 28 Kommentare

Ihr habt mir vor ein paar Monaten schon mal mit einem ähnlichen prob geholfen.
Ich stelle mich aber irgendwie doof an, wenn ich das mit den batches selbst machen soll - sorry.

Hallo an Alle,



Problemstellung:

Im Ordner D:\Schriftdaten gibt es beliebig viele Unterordner

nun möchte ich in diesem Ordner alle Unterordner nach der neuesten *.doc, der neuesten *.docx und neuesten *.txt durchsuchen und die gefundenen Dateien in den Ordner D:\Schriftdaten_akt kopieren. Hierbei kann es vorkommen, dass eine Datei mit exakt gleichem Namen/Datum/Uhrzeit mehrfach in den Unterverzeichnissen vorhanden ist. Diese sollte dann nur einmal kopiert werden. Der Ordner D:\Schriftdaten_akt soll vor dem Kopieren jedesmal komplett gelöscht werden.

Hat jemand zufällig eine passende batch für mich, ausgehend von der Überlegung, dass ich wirklich nicht den grossen Durchblicker habe, wenn da noch etwas von mir anzupassen wäre. Machbar ?

Dank im Voraus

Markus
28 Antworten
Mitglied: Pjordorf
01.02.2013 um 13:14 Uhr
Hallo,

Zitat von MmarKuss:
Durchblicker habe, wenn da noch etwas von mir anzupassen wäre. Machbar ?
Lass mal sehen was du schon an Batch hast? (Oder willst du nur das Geld für einen Programmierer sparen)

Gruß,
Peter
Bitte warten ..
Mitglied: MmarKuss
01.02.2013, aktualisiert um 13:25 Uhr
...die Peinlichkeit wollte ich mir eigentlich ersparen...

Aus einem anderen, im Netz gefundenen Skript habe ich versucht, etwas auf meine Bedürfnisse umzumodeln,
bin aber schon bei den ersten Versuchen kläglich gescheitert, da ich einfach die Syntax nicht verstehe.

echo off
setlocal

set workdir="D:\Schriftdaten\"
set files=
dir %workdir% /A-D/B/OG-D>%temp%files.tmp
for /f "tokens=1* delims=" %%i in (%temp%files.tmp) do if not defined files set "files=%%i"
del %temp%files.tmp
echo %files%
xcopy %files% "D:\Schriftdaten_akt\"

pause

...und wenn jetzt einer lacht : ich bin ziemlich gross und stark...
Bitte warten ..
Mitglied: Pjordorf
01.02.2013 um 13:59 Uhr
Hallo,

Zitat von MmarKuss:
...die Peinlichkeit wollte ich mir eigentlich ersparen...
Ich denke da muss dir gar nichts Peinlich sein.

bin aber schon bei den ersten Versuchen kläglich gescheitert, da ich einfach die Syntax nicht verstehe.
Die kannst du in einem CMD Fenster mit Befehlsname /? oder Befehlsname /help dir anlesen. Hier eine sehr gute Seite http://www.robvanderwoude.com/batchfiles.php

Ein "echo off" bedeutet das alles was du nicht sehen willst unterdrückt wird. Erschwert erstmal die Fehlersuche. Also schnell ein "rem @echo off" dort eintragen. Dann wirst du schon mehr sehen Und Code Tags helfen uns dir im Quellcode weiter zu helfen. Warum? Schau mal:
01.
rem @echo off 
02.
setlocal 
03.
 
04.
set workdir="D:\Schriftdaten\" 
05.
set files= 
06.
 
07.
dir %workdir% /A-D/B/OG-D>%temp%files.tmp 
08.
 
09.
for /f "tokens=1* delims=" %%i in (%temp%files.tmp) do if not defined files set "files=%%i" 
10.
 
11.
del %temp%files.tmp 
12.
echo %files%  
13.
 
14.
xcopy %files% "D:\Schriftdaten_akt\" 
15.
 
16.
pause
Mit REM werden Kommentare eingeleitet
Mit SET werden Variablen (und werte) definiert.
Das DIR listet Verzeichnissinhalte auf
Das > ist hier ein Umleitung der Ausgabe in einer benannten Datei
.
.
.

Gruß,
Peter
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 14:20 Uhr
OK, ich geb auf.
Bei meinen "fundierten" Englischkenntnissen werde ich da nie durchsteigen.

Danke dennoch.

und Gruss

markus
Bitte warten ..
Mitglied: bastla
01.02.2013 um 15:51 Uhr
Hallo MmarKuss!
alle Unterordner nach der neuesten *.doc, der neuesten *.docx und neuesten *.txt durchsuchen
  • Meinst du damit jeweils nur eine Datei oder die neueste je Unterordner?
  • Sind auch Unter-Unterordner mit einzubeziehen?
  • Sollen tatsächlich "doc"- und "docx"-Dateien getrennt erfasst werden (Batch macht bei "*.doc" nämlich keinen Unterschied und liefert Dateien mit beiden Erweiterungen)?
Der Ordner D:\Schriftdaten_akt soll vor dem Kopieren jedesmal komplett gelöscht werden.
  • Wäre demnach ein
rd /s /q D:\Schriftdaten_akt
ok oder sollen nur alle enthaltenen Dateien gelöscht werden?

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 16:11 Uhr
Hallo Bastla,

dank Dir für dein posting, bin schon am verzweifeln.

Ich möchte aus dem Ordner D:\Schriftdaten ( der einige Unterodrdner enthält ) immer eine ( die neueste )
Datei mit der Endung *.doc, die neueste *.docx und *.txt
im Ordner D:\Schriftdaten_akt haben, wenn die batch ausgeführt ist .

D.h. im Ordner D:\Schriftdaten_akt sollten dann immer nur 3 dateien stehen ( es sei denn, ich erweitere das noch um z.B. xls Dateien )

also : pro Endung nur eine datei
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 16:15 Uhr
...war noch nicht fertig...

auch Unterordner mit einbeziehen,
OK, das mit dem *.doc und *.docx scheint ein prob zu sein - dann werde ich eben zusehen, dass hier keiner mehr das alte Word benutzt, also nur nach docx suchen lassen
D:\Schriftdaten_akt soll jedesmal komplett gelöscht werden

Danke
Bitte warten ..
Mitglied: bastla
01.02.2013, aktualisiert um 16:42 Uhr
Hallo MmarKuss!

Das könnte etwa so gehen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Schriftdaten" 
03.
set "Ziel=D:\Schriftdaten_akt" 
04.
set "Typen=doc docx txt" 
05.
 
06.
rd /s /q "%Ziel%" 2>nul 
07.
md "%Ziel%" 
08.
set "Liste=%temp%\Dateiliste.txt" 
09.
for %%t in (%Typen%) do ( 
10.
    del "%Liste%" 2>nul 
11.
    for /f "delims=" %%f in ('dir /s/b/a-d "%Basis%\*.%%t" 2^>nul^|findstr /ie "\.%%t"') do ( 
12.
        for /f "tokens=1-5 delims=.: " %%a in ("%%~tf") do ( 
13.
            >>"%Liste%" echo %%c%%b%%a%%d%%e %%~ff 
14.
15.
16.
    if exist "%Liste%" ( 
17.
        for /f "tokens=1*" %%k in ('sort "%Liste%"') do set "Latest=%%l" 
18.
        setlocal enabledelayedexpansion 
19.
        echo "!Latest!" 
20.
        copy "!Latest!" "%Ziel%\">nul 
21.
        endlocal 
22.
23.
24.
del "%Liste%" 2>nul
Kurze Erklärung:
  • Mit der "%%t"-Schleife werden die verschiedenen Typen der Reihe nach abgearbeitet.
dir /s/b/a-d "%Basis%\*.%%t" 2^>nul^|findstr /ie "\.%%t"
sucht alle dem aktuellen Typ entsprechenden Dateien und unterscheidet durch Filterung auch "doc" und "docx".
  • Für jede gefundene Datei (vollständiger Pfad in "%%f") wird das Änderungsdatum (samt Uhrzeit) ausgelesen und im Format "JJJJMMTThhss Dateipfad" in eine Temp-Datei geschrieben.
  • Nachdem alle gefundenen Dateien verarbeitet wurden, wird (falls überhaupt eine Datei in der Temp-Datei steht) die Temp-Datei sortiert und der Pfad der letzten Datei (= höchster Datumswert = neueste) zwischengespeichert, zur Information ausgegeben und schließlich die Datei kopiert.

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 16:52 Uhr
Du bist genial, DANKE !!!

Wenn Du mir jetzt noch erzählen kannst ( was ich leider vergessen habe ) wie ich die neueste
background.jpg ( also fixer Name plus fixe Endung, aber eben die aktuellste im gesamten Ordner) mit dazu in D:\Schriftdaten_akt einkopieren kann,
bist Du heute für mich der Held

Gruss

markus
Bitte warten ..
Mitglied: bastla
01.02.2013, aktualisiert um 18:09 Uhr
Hallo MmarKuss!

Die Kombination "nur Typ" und "Dateiname" ist etwas tricky, sollte sich aber so lösen lassen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Schriftdaten" 
03.
set "Ziel=D:\Schriftdaten_akt" 
04.
set "Dateien=.doc .docx .txt .xls \background.jpg" 
05.
 
06.
rd /s /q "%Ziel%" 2>nul 
07.
md "%Ziel%" 
08.
set "Liste=%temp%\Dateiliste.txt" 
09.
for %%t in (%Dateien%) do ( 
10.
    del "%Liste%" 2>nul 
11.
    for /f "delims=" %%f in ('dir /s/b/a-d "%Basis%" 2^>nul^|findstr /ie "\%%t"') do ( 
12.
        for /f "tokens=1-5 delims=.: " %%a in ("%%~tf") do ( 
13.
            >>"%Liste%" echo %%c%%b%%a%%d%%e %%~ff 
14.
15.
16.
    if exist "%Liste%" ( 
17.
        for /f "tokens=1*" %%k in ('sort "%Liste%"') do set "Latest=%%l" 
18.
        setlocal enabledelayedexpansion 
19.
        echo "!Latest!" 
20.
        copy "!Latest!" "%Ziel%\">nul 
21.
        endlocal 
22.
23.
24.
del "%Liste%" 2>nul
Im Unterschied zur Version 1 werden hier die Trennzeichen vor dem jeweiligen Suchbegriff (also "." oder "\") mitgeliefert und die Selektion erfolgt nur per "findstr" ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 20:04 Uhr
Hi Bastla,

bösartig, wie ich nun mal bin ( ) , habe ich Alles versucht, um Deine batch auszutricksen - keine Chance.

Also: Ein turbodickes Dankeschön an Dich !!!

Jetzt will ich nur noch nen kleinen Schönheitsfehler in den Griff bekommen - wenns geht.
Wenn ich in der batch am Schluss word.exe öffne, ( start C:\Winword\word.exe ) dann bleibt mir das minimierte cmd-Fenster unten in der Leiste stehen, nachdem ich die batch über eine Verknüpfung minimiert geöffnet habe.

Gibts dazu noch nen Trick?

Grüsse von

Martin
Bitte warten ..
Mitglied: bastla
01.02.2013 um 20:33 Uhr
Hallo MmarKuss!

Kann ich leider nicht nachvollziehen - ein "start" ohne "/wait" bewirkt ja eigentlich, dass der Batch weiterläuft und nicht darauf wartet, dass das gestartete Programm beendet wird - wenn daher die letzte Zeile Deines Batches
start C:\Winword\word.exe
lautet, sollte es noch nicht einmal eines
exit
dahinter bedürfen, um den Batch zu beenden ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 21:58 Uhr
Hallo Bastla,

nachdem ich das halbe Netz durchsucht habe, verstehe ich es eben auch nicht.

meine letzten Zeilen sehen so aus:


)
del "%Liste%" 2>nul

start C:\Winword\word.exe
EXIT

Word wird geöffnet , aber das cmd-Fenster bleibt im Hintergrund offen ( aber nur, wenn ich den Start-Befehl für word anhänge ).
Wenn ich die bat über eine Verknüpfung öffne, so ist es etwas hübscher, aber das minimierte Fenster bleibt in der Leiste stehen und ich muss es von Hand schliessen.

Aber egal, ist zwar nicht wirklich hübsch, aber der Sinn und Zweck der Übung wird ja erfüllt.

Gruss

Markus
Bitte warten ..
Mitglied: MmarKuss
01.02.2013 um 22:09 Uhr
Vielleicht gibt das noch jemand eine Idee:

im cmd-Fenster steht dann noch:



Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Winword>



Vielleicht muss ich erst wieder auf die C-Ebene zurück, damit sich das Teilchen von selbst wieder schliesst.
Bitte warten ..
Mitglied: MmarKuss
02.02.2013 um 00:04 Uhr
... und wenn man auf Bastla hört und nicht aus Eigenversuchen noch die erste Zeile mit

Start /min

stehen lässt, dann klappt´s auch mit der Optik.................................


Grüsse vom restlos begeisterten

Markus
Bitte warten ..
Mitglied: MmarKuss
24.01.2014 um 12:44 Uhr
Hallo allerseits...ich mal wieder und immer noch nichts dazu gelernt...sorry

Habe eine ähnliche Fragestellung wie oben, aber mit der Abänderung des Skripts von bastla bin ich kläglich gescheitert....

Also:
ich möchte eine immer gleichlautende file ( welche immer neu überschrieben wird ) aus immer demselben Ordner kopieren und in den Ordner eines anderen Rechners im Netzwerk einkopieren.Innerhalb dieses Ordners werden permanent neue Unterordner eingefügt. Die Datei soll in den jeweils neuesten Ordner einkopiert werden.

Basis: D:\nctemp\test.doc diese test.doc soll eingefügt werden in
\\Z\Beschreibungen\ " hier in den Ordner mit dem aktuellsten Datum" .

Ergebnis sollte also beispielsweise dann so aussehen:

Z\\Beschreibungen\2014_01_24_12_43\test.doc


Machbar ?

Gruß und Dank im Voraus

Markus
Bitte warten ..
Mitglied: bastla
24.01.2014 um 15:15 Uhr
Hallo MmarKuss!

Eigentlich eine andere Frage, passt aber irgendwie trotzdem unter den aussagekräftigen Threadtitel ...

Ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=D:\nctemp\test.doc" 
03.
set "Ziel=\\Z\Beschreibungen" 
04.
 
05.
for /f "delims=" %%i in ('dir /b/ad/on "%Ziel%\20*"') do set "Neuester=%%i" 
06.
copy "%Quelle%" "%Ziel%\%Neuester%\" >nul
Wegen des "/on" wird der Name des Ordners für die Sortierung herangezogen - alternativ kannst Du auch "/od", ev zusammen mit "/tc" (für Erstellungs- anstatt Änderungsdatum) verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
24.01.2014, aktualisiert um 17:25 Uhr
Hallo bastla,

erst mal DANKE !!!!!!!!!!!! für Deine wieder mal schnelle Hilfe.
Das Ganze funktioniert prima, bis auf die Tatsache, dass er die test.doc in den Ordner "Beschreibungen" direkt einlädt, nicht aber in den darin liegenden neuesten Unterordner.
....dies bei exakter Übernahme Deines Skriptes

Gruß

Markus
Bitte warten ..
Mitglied: bastla
LÖSUNG 24.01.2014, aktualisiert 25.01.2014
Hallo MmarKuss!

Funktioniert zwar bei mir (inzwischen getestet ), aber Du kannst ja einfach aus dem "echo off" ein "echo on" machen und Dir genau den Ablauf ansehen, um eine Erklärung dafür zu finden, dass offensichtlich "%Neuester%" bei Dir leer bleibt ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
25.01.2014, aktualisiert um 16:29 Uhr
Hallo Bastla,

,irgendetwas läuft bei mir dabei total schief:
Wenn ich Ziel =\\Z\Beschreibungen setze, kommt die Meldung, "Der Netzwerkpfad wurde nicht gefunden ", obwohl ich das verbundene Laufwerk Z über den explorer öffnen kann.
OK, dann anstatt dessen \\Calidia_959\D\Beschreibungen eingesetzt ( Calidia_959 = Computername, D ist das verknüpfte Laufwerk ) dann kommt die Meldung:

for /f "delims=" %i in ('dir /b/ad/on "\\Calidia_959\D\Beschreibungen\20*"') do set "Neuester=%i" Datei nicht gefunden,

er kopiert aber die test.doc in \\Calidia_959\D\Beschreibungen.
In diesem Ordner befinden sich aber mehrer Unterordner, welche er offensichtlich ignoriert....

Ich doof ???

Gruß Markus
Bitte warten ..
Mitglied: bastla
25.01.2014 um 16:43 Uhr
Hallo MmarKuss!

Wenn Du das Laufwerk als Z: verbunden hast, dann wäre Zeile 3 natürlich
set "Ziel=Z:\Beschreibungen"
Ansonsten kannst Du natürlich auch zum Testen direkt in der CMD-Shell
dir /b/ad/on Z:\Beschreibungen
(also ohne "20*") eingeben, um so vielleicht Auffälligkeiten zu entdecken.
OK, dann anstatt dessen \\Calidia_959\D\Beschreibungen eingesetzt ( Calidia_959 = Computername, D ist das verknüpfte Laufwerk )
Was Du mit dem "D" meinst, kann ich nicht wirklich nachvollziehen - wenn der Ordner am Server "Calidia_959" unter dem Namen "Beschreibungen" freigegeben ist, lautet der (UNC-)Pfad "\\Calidia_959\Beschreibungen", unabhängig von einer etwaigen Laufwerksverknüpfung am Client ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
25.01.2014 um 17:05 Uhr
Bastla, Du bist einfach genial, danke. So funktioniert das.

Jetzt hoffe ich, dass Du mich nicht killst.........
In dem neuesten Unterordner in Z:\Beschreibungen befinden sich leider nochmals Unterordner ( woran ich nicht gedacht hatte....)
Die test.doc soll also in Z:\Beschreibungen\"neuester Unterordner" (hier liegt sie jetzt)\"neuester Unterordner" einkopiert werden.

Wenn das klappt bin ich happy über beide Ohren und wenn Du mal nach Heidelberg kommst, hast Du mindestens ein Bierchen gut.....

Ich hab mal im Internet rum recherchiert, aber nichts Gescheites zu Folgendem gefunden.

Gibt es eigentlich irgendwo eine gute Lernanleitung für die Batch-Programmierung ( z.B. die Syntax von "delims" richtig verstehen ) ?
Ich fürchte nämlich dass demnächst mehr an Batches auf mich zukommen könnte und ich mag net immer so doof fragen......

Gruß

Markus
Bitte warten ..
Mitglied: bastla
25.01.2014 um 17:12 Uhr
Hallo MmarKuss!

Wenn Du %Neuester% hast, kannst Du ja nach dem gleichen Muster fortsetzen:
01.
... 
02.
for /f "delims=" %%i in ('dir /b/ad/on "%Ziel%\%Neuester%\20*"') do set "Zielordner=%%i" 
03.
copy "%Quelle%" "%Ziel%\%Neuester%\%Zielordner%\" >nul
Gibt es eigentlich irgendwo eine gute Lernanleitung für die Batch-Programmierung ( z.B. die Syntax von "delims" richtig verstehen ) ?
Genau dafür hat doch @Friemler sein Tutorial zur FOR-Schleife erstellt ...

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
25.01.2014 um 17:41 Uhr
Hallo Bastla,

wenn ich Folgendes schreibe:

@echo on & setlocal
set "Quelle=D:\nctemp\test.doc"
set "Ziel=Z:\Beschreibungen"

for /f "delims=" %%i in ('dir /b/ad/on Z:\Beschreibungen') do set "Neuester=%%i"
copy "%Quelle%" "%Ziel%\%Neuester%\" >nul

, dann schreib er brav die test.doc in den neuesten Ordner Im Verzeichnis Z.\Beschreibungen.


Sobald ich aber den string %Neuester%\20*" ins Spiel bringe, kommt die Meldung:

Datei nicht gefunden

So hab ich versucht, Deinen Tip umzusetzen:

@echo on & setlocal
set "Quelle=D:\nctemp\test.doc"
set "Ziel=Z:\Beschreibungen"

for /f "delims=" %%i in ('dir /b/ad/on "%Ziel%\%Neuester%\20*"') do set "Zielordner=%%i"
copy "%Quelle%" "%Ziel%\%Neuester%\%Zielordner%\" >nul
Resultat: Datei nicht gefunden

Gleiche Meldung bei:

@echo on & setlocal
set "Quelle=D:\nctemp\test.doc"
set "Ziel=Z:\Beschreibungen"

for /f "delims=" %%i in ('dir /b/ad/on "Z:\Beschreibungen\%Neuester%\20*"') do set "Zielordner=%%i"
copy "%Quelle%" "%Ziel%\%Neuester%\%Zielordner%\" >nul


Hmpf.....


Gruß

Markus
Bitte warten ..
Mitglied: MmarKuss
25.01.2014 um 18:41 Uhr
Hallo Bastla,

Dank nochmals für Deine Hilfe !!!

Hab jetzt mal selbst ein bisschen gespielt und versucht, den "gesunden Menschenverstand" einzusetzen. Hierbei ist Folgendes herausgekommen:

echo on & setlocal
set "Quelle=D:\nctemp\test.doc"
set "Ziel=Z:\Beschreibungen"

for /f "delims=" %%i in ('dir /b/ad/od Z:\Beschreibungen') do set "Neuester=%%i"
for /f "delims=" %%f in ('dir /b/ad/tc Z:\Beschreibungen\%Neuester%') do set "Zielordner=%%f"
copy "%Quelle%" "Z:\Beschreibungen\%Neuester%\%Zielordner%\" >nul


Nicht zu fassen, aber wahr: Es funktioniert.

Gruß

Markus
Bitte warten ..
Mitglied: bastla
25.01.2014 um 20:23 Uhr
Hallo MmarKuss!
versucht, den "gesunden Menschenverstand" einzusetzen.
Keine ganz schlechte Idee ...

Dass es jetzt funktioniert würde übrigens mE bedeuten, dass Deine Ordner nicht nach dem oben angeführten Beispiel "2014_01_24_12_43" benannt sind und deswegen zur Vorgabe "20*" kein Ordnername passt.

Eleganter (und änderungsfreundlicher) wird's noch, wenn Du jeweils "Z:\Beschreibungen" durch "%Ziel%" ersetzt.

Grüße
bastla
Bitte warten ..
Mitglied: MmarKuss
26.01.2014 um 13:46 Uhr
Hallo Bastla,

"Keine ganz schlechte Idee ... " ....das nehm ich jetzt ganz uneingebildet einfach mal als Kompliment...

Wie das Datum im Hintergrund von Windows gespeichert wird: keine Ahnung, im explorer angezeigt wird es als
24.01.2014 12:43 ... um Dein Beispiel zu übernehmen.

Das mit der Eleganz habe ich dankend übernommen.

Grüße von

Markus
Bitte warten ..
Mitglied: bastla
26.01.2014 um 14:59 Uhr
Hallo MmarKuss!
Wie das Datum im Hintergrund von Windows gespeichert wird:
... war eigentlich gar nicht das Thema - anhand Deines Beispiels oben "2014_01_24_12_43" bin ich davon ausgegangen, dass die Ordner anhand des Datums benannt sind (deshalb auch die Sortierung mit "/on", also nach Namen). Wenn die Namen der Ordner nicht das Kriterium sein sollen, dann müsste im "dir" mit "/o-d" sortiert werden ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...