Datei verschieben um bestimmte Uhrzeit.
Guten Tag,
bin neu hier und kenne mich garnicht aus mit Batch Dateien. Ich hoffe mir wird geholfen und ich bedanke mich schon mal vorher.
Zuerst einmal habe ich eine Frage, und zwar werden die Batch Dateien von alleine ausgeführt? Oder muss ich da erst draufklicken?
Wenn es von alleine ausgeführt wird, ist es möglich ohne benachrichtigt zu werden? Also es soll einfach ausgeführt werden, ohne das das mitkriege.
Nun zu meiner eigentlichen Frage. Ich möchte einen bestimmten Ordner von A nach B kopieren, dabei sollte es aber komplett rüber gezogen werden, ohne das er noch im ersten Verzeichnis vorhanden ist.
Das Problem dabei wäre, es ist immer der selbe Ordner, also dürften die verschobenen Ordner nicht ersetzt werden, sondern mit der Endung 2, 3, 4, usw. kopiert werden.
Dann noch zu der dritten Sache, der Ordner sollte um eine bestimmte Uhrzeit immer verschoben werden, bzw. einmal am Tag irgendwann.
Ich weiß es ist viel verlangt, meine Frage ist nun, würde das alles klappen und wenn ja, wie?
Vielen Dank
Samira-
bin neu hier und kenne mich garnicht aus mit Batch Dateien. Ich hoffe mir wird geholfen und ich bedanke mich schon mal vorher.
Zuerst einmal habe ich eine Frage, und zwar werden die Batch Dateien von alleine ausgeführt? Oder muss ich da erst draufklicken?
Wenn es von alleine ausgeführt wird, ist es möglich ohne benachrichtigt zu werden? Also es soll einfach ausgeführt werden, ohne das das mitkriege.
Nun zu meiner eigentlichen Frage. Ich möchte einen bestimmten Ordner von A nach B kopieren, dabei sollte es aber komplett rüber gezogen werden, ohne das er noch im ersten Verzeichnis vorhanden ist.
Das Problem dabei wäre, es ist immer der selbe Ordner, also dürften die verschobenen Ordner nicht ersetzt werden, sondern mit der Endung 2, 3, 4, usw. kopiert werden.
Dann noch zu der dritten Sache, der Ordner sollte um eine bestimmte Uhrzeit immer verschoben werden, bzw. einmal am Tag irgendwann.
Ich weiß es ist viel verlangt, meine Frage ist nun, würde das alles klappen und wenn ja, wie?
Vielen Dank
Samira-
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121846
Url: https://administrator.de/contentid/121846
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Samira-,
keine Datei öffnet sich von selbst. Entweder man öffnent sie durch anklicken, lässt sie von einer anderen Anwendung öffnen, oder nutzt die Möglichkeiten des Betriebssystems das zu erledigen (Autostart, geplanter Task). Für dein Vorhaben sollte der geplante Task das sein, was du suchst.
MOVE sollte der Befehl sein, der dir das Verzeichnis verschiebt. Die Sache mit dem Hochzählen ist auch machbar. Man muss eben jedes mal prüfen, welche Verzeichnisse bereits existieren.
Da du scheinbar noch nicht sehr viel Erfahrung hast, solltest du noch einmal genau das Verzeichnis (jeweils mit Pfad) posten, das verschoben werden soll, sowie das Verzeichnis in das verschoben werden soll.
Grüße
rubberman
keine Datei öffnet sich von selbst. Entweder man öffnent sie durch anklicken, lässt sie von einer anderen Anwendung öffnen, oder nutzt die Möglichkeiten des Betriebssystems das zu erledigen (Autostart, geplanter Task). Für dein Vorhaben sollte der geplante Task das sein, was du suchst.
MOVE sollte der Befehl sein, der dir das Verzeichnis verschiebt. Die Sache mit dem Hochzählen ist auch machbar. Man muss eben jedes mal prüfen, welche Verzeichnisse bereits existieren.
Da du scheinbar noch nicht sehr viel Erfahrung hast, solltest du noch einmal genau das Verzeichnis (jeweils mit Pfad) posten, das verschoben werden soll, sowie das Verzeichnis in das verschoben werden soll.
Grüße
rubberman
Schau dir mal das Robocopytool von MS an. Zusammen mit der Yarcgui kann man das prima konfigurieren.
Ich weis zwar nicht ob man die Ordner durchnummerieren kann (Chancen stehen alelrdings nicht schlecht). Was ich aber definitiv weis, ist das man das aktuelle Datum bis auf die Sekunde genau eingeben kann.
http://www.heise.de/software/download/special/backup_mit_robocopy/17_1
Ich weis zwar nicht ob man die Ordner durchnummerieren kann (Chancen stehen alelrdings nicht schlecht). Was ich aber definitiv weis, ist das man das aktuelle Datum bis auf die Sekunde genau eingeben kann.
http://www.heise.de/software/download/special/backup_mit_robocopy/17_1
Zitat von @19122-:
Vielen Dank für die schnellen Antworten. Und wie ist das mit dem
Datum und der Uhrzeit, würde es auch dann durchgeführt
werden, selbst wenn der Computer nicht eingeschaltet ist?
Vielen Dank für die schnellen Antworten. Und wie ist das mit dem
Datum und der Uhrzeit, würde es auch dann durchgeführt
werden, selbst wenn der Computer nicht eingeschaltet ist?
Wie ist das denn gemeint? Bedingung für die Batchdatei, ist natürlich das die Quelle "C:\Users\Samira\Documents\Unterlagen" verfügbar ist (NAtürlich auch das Ziel).
Ist der PC/Netzwerkfestplatte/Server aus geht das natürlich nicht
Ein PC macht ohne Strom keinen Handschlag :
Der Ordner Unterlagen sollte vollständig kopiert werden. Er
besteht im Verzeichnis:
C:\Users\Samira\Documents\Unterlagen
Sollte verschoben werden in in Ordner Vollständig. Er besteht im
Verzeichnis:
C:\Users\Samira\Documents\Unterlagen
Also sollte er später irgendwann einmal im Ordner
"Unterlagen" die Ordner "Unterlagen 1",
"Unterlagen 2", usw. sein.
besteht im Verzeichnis:
C:\Users\Samira\Documents\Unterlagen
Sollte verschoben werden in in Ordner Vollständig. Er besteht im
Verzeichnis:
C:\Users\Samira\Documents\Unterlagen
Also sollte er später irgendwann einmal im Ordner
"Unterlagen" die Ordner "Unterlagen 1",
"Unterlagen 2", usw. sein.
Das ist ja lokal auf deinem PC, also muß die Büchse dann auch eingeschalten sein.
Da beißt sich was. In deinem dritten Abschnitt schreibst Du, dass ein Ordner "Vollständig" in "Unterlagen" existiert, in den verschoben werden soll. Im vierten Abschnitt sollen die neuen Verzeichnisse aber direkt in "Unterlagen" erstellt werden.
Ja, wo denn nun?
Ich muss Labamba81 und crashzero2000 recht geben. Natürlich passiert nichts, wenn der Rechner aus ist. Im Zweifelsfall passiert auch nichts wenn der Rechne an ist, du aber nicht angemeldet bist. Die Frage ist, warum sollte überhaupt was passieren? Solange der Rechner ausgeschaltet ist, werden keine Daten erstellt, die verschoben werden könnten.
Also hast du folgendes Problem:
Wenn du das ganze als geplanten Task ausführen lassen willst, passiert nichts, wenn der Rechner zur angegebene Zeit aus ist. Wenn du das andererseits über den Autostart ausführen lässt, wird bei jedem Start des Rechners der Batch ausgeführt (ggf. also auch mehrfach am Tag) und ein neues Verzeichnis erstellt.
Wie wäre es, wenn du statt der fortlaufenden Numerierung, immer das aktuelle Datum an den Namen Anhängen würdest? Vorteile:
Du wüsstest auf den ersten Blick, wann das Verzeichnis erstellt wurde.
Das aufwendige Durchsuchen, welche Nummer die letzte war, entfällt.
Du kannst das ganze über den Autostart ausführen, da ein simpler Check, ob schon ein Verzeichnis mit dem aktuellen Datum existiert, genügt, um nicht mehrere Verzeichnisse an einem Tag zu erstellen
Ja, wo denn nun?
Ich muss Labamba81 und crashzero2000 recht geben. Natürlich passiert nichts, wenn der Rechner aus ist. Im Zweifelsfall passiert auch nichts wenn der Rechne an ist, du aber nicht angemeldet bist. Die Frage ist, warum sollte überhaupt was passieren? Solange der Rechner ausgeschaltet ist, werden keine Daten erstellt, die verschoben werden könnten.
Also hast du folgendes Problem:
Wenn du das ganze als geplanten Task ausführen lassen willst, passiert nichts, wenn der Rechner zur angegebene Zeit aus ist. Wenn du das andererseits über den Autostart ausführen lässt, wird bei jedem Start des Rechners der Batch ausgeführt (ggf. also auch mehrfach am Tag) und ein neues Verzeichnis erstellt.
Wie wäre es, wenn du statt der fortlaufenden Numerierung, immer das aktuelle Datum an den Namen Anhängen würdest? Vorteile:
Du wüsstest auf den ersten Blick, wann das Verzeichnis erstellt wurde.
Das aufwendige Durchsuchen, welche Nummer die letzte war, entfällt.
Du kannst das ganze über den Autostart ausführen, da ein simpler Check, ob schon ein Verzeichnis mit dem aktuellen Datum existiert, genügt, um nicht mehrere Verzeichnisse an einem Tag zu erstellen
Moin samira,
sorry für meine späte Beantwortung aber ich hatte viele andere Sachen auch noch zu tun jetzt zu Deinem Problem
Es wird vor der VerschiebeZeit Verschoben und Zwar der komplette Inhalt von "C:\Users\Samira\Documents\Unterlagen" nach "C:\Users\Samira\Documents\Unterlagen 1"
und beim nächsten Zeitraum nach "C:\Users\Samira\Documents\Unterlagen 2" und so weiter.
Wenn Dein Ordner jetzt schon voller Dateien ist erledigt der Batch alles nach den jeweiligen Erstellungszeiten der Dateien bzw Ordner und Verschiebt in die jeweiligen "Unterlagen NR" pro Zeitraum.
Wenn die 24 Stunden nicht abgelaufen sind werden die Dateien dieses Zeitraumes nicht Verschoben. Du kannst also den Batch x-mal am Tag starten
ich gehe davon aus, dass Du die Dateien in den Ordner Unterlagen erstellst bzw hineinkopierst also nicht von irgendwo hinein Verschiebst, dann müsste es so klappen.
Bei
Set VerschiebeZeit=15:45
gibst Du hinter dem = die Zeit ein, welche die Verschiebezeit sein soll.
ganz unten die Zeile mit @echo wenn der Batch so anzeigen tut wie er soll - nur das @echo entfernen
Du kanst dann den Batch Verknüpfen also eine Verknüpfung vom Batch anlegen bei der Verknüpfung klickst Du Rechts und gehst auf den Reiter Verknüfung. In der Zeile Ausführen wählst Du dann Minimiert aus. dann Enter drücken. diese Verknüpfung kopierst Du Dir in den AutostartOrdner hinein. und wenn Du willst kannste noch den Batchlink zu der gleichen Zeit im Taskplaner starten.
sorry für meine späte Beantwortung aber ich hatte viele andere Sachen auch noch zu tun jetzt zu Deinem Problem
Es wird vor der VerschiebeZeit Verschoben und Zwar der komplette Inhalt von "C:\Users\Samira\Documents\Unterlagen" nach "C:\Users\Samira\Documents\Unterlagen 1"
und beim nächsten Zeitraum nach "C:\Users\Samira\Documents\Unterlagen 2" und so weiter.
Wenn Dein Ordner jetzt schon voller Dateien ist erledigt der Batch alles nach den jeweiligen Erstellungszeiten der Dateien bzw Ordner und Verschiebt in die jeweiligen "Unterlagen NR" pro Zeitraum.
Wenn die 24 Stunden nicht abgelaufen sind werden die Dateien dieses Zeitraumes nicht Verschoben. Du kannst also den Batch x-mal am Tag starten
ich gehe davon aus, dass Du die Dateien in den Ordner Unterlagen erstellst bzw hineinkopierst also nicht von irgendwo hinein Verschiebst, dann müsste es so klappen.
Bei
Set VerschiebeZeit=15:45
gibst Du hinter dem = die Zeit ein, welche die Verschiebezeit sein soll.
ganz unten die Zeile mit @echo wenn der Batch so anzeigen tut wie er soll - nur das @echo entfernen
Du kanst dann den Batch Verknüpfen also eine Verknüpfung vom Batch anlegen bei der Verknüpfung klickst Du Rechts und gehst auf den Reiter Verknüfung. In der Zeile Ausführen wählst Du dann Minimiert aus. dann Enter drücken. diese Verknüpfung kopierst Du Dir in den AutostartOrdner hinein. und wenn Du willst kannste noch den Batchlink zu der gleichen Zeit im Taskplaner starten.
@echo off & setlocal
:: Hier die tatsächliche Verschiebezeit eingeben als Stunde:Mintue
set VerschiebeZeit=15:45
set /a NR = 1
set "Pfad=C:\Users\Samira\Documents\Unterlagen"
pushD "%Pfad%"
:: ---------------------- gestern setzen---------
set "filedate=%date: *=%"
for /f "tokens=2 delims=()" %%i in ('echo.^|date') do set Format=%%i
set filetime=%Verschiebezeit%
call :1stTest
:: ---------------------- Pruefung auf letzten Intervall Ordner
for /f "tokens=2,*" %%i in ('dir /a:d zxy 2^>nul') do if "%%i"=="von" (set "folder=%%~nj" & for /f "tokens=*" %%k in ('dir "%%~fj*" /a:d /b ') do set "name=%%k" & call :foldrtst )
:: ---------------------- Finden und Verschieben der Daten
for /f "skip=5 tokens=1-3*" %%i in ('dir /a: /o:gd /t:c') do (set /a NRb = NR & set "filedate=%%i" & set "filetime=%%j" & set "name=%%l" & call :timefram "%%k" )
:: Wenn der Batch richtig funktioniert machst Du hier nur goto :eof
echo Ablauf fertig !&pause & goto :eof
:: ---------------------- Schleife: Pruefung auf letzten Intervall Ordner
:foldrtst
if "%name%" == "%folder% %NR%" (set /a NR + = 1 & goto :foldrtst ) else goto :eof
:: ---------------------- Schleife: Finden und Verschieben der Daten
:timefram
for %%i in ("." "..") do if "%name%" == "%%~i" goto :eof
echo "%filetime%" | findstr "Dat Ver" && goto :eof
if not %NRb% == 0 if "%~1" == "<DIR>" (if "%name%" == "%folder% %NRb%" (goto :eof ) else (set /a NRb - = 1 & goto :timefram))
:1stTest
:: ---------------------- Datumaufdröselung nach Numerisch ----------------------
for /f "tokens=1-3 delims=-" %%i in ("%Format%") do for /f "tokens=1-3 delims=.-" %%l in ("%filedate%") do set "%%i=%%l" & set "%%j=%%m" & set "%%k=%%n"
:: --------- Zweistellige Jahresaufloesung (19)40 bis (19)99, (20)00 bis (20)39
if %JJ:~0,-1% leq 9 if %JJ:~0,-1% lss 4 (set JJ=20%JJ%) else set JJ=19%JJ%
:: LY Schaltjahr
set /a LY = JJ / 4 - ( JJ - 1 ) / 4 - (JJ / 100 - ( JJ - 1 ) / 100) + ( JJ / 400 - ( JJ - 1 ) / 400 )
set /a MM=10%MM% %% 100
:: beforemonthdays Vergangene Tage im Jahr bis zum Vormonat LY xday
:: alldays Vergangene Tage bis Dato als TageZahl
if %MM% lss 3 (set /a LY = 0 & if %MM% equ 2 (set /a xday = 2 ) else set /a xday = 1 ) else if %MM% equ 3 set /a xday = - 1
set /a beformonthdays = (( MM - 4 + MM / 8 ) / 2 + ( MM - 1 ) * 30 ) + LY + xday
set /a TT=10%TT% %% 100
:: Vergangene Tage
set /a alldays=((JJ-1600)*365)+((JJ-1601)/4)+((JJ-1601)/100)-((JJ-1601)/400) + beforemonthdays + TT
:: ---------------------- Ende Datumaufdröselung nach Numerisch ----------------------
:: ---------------------- Zeitaufdröselung nach Numerisch ----------------------
for /f "tokens=1,2 delims=:" %%i in ("%filetime%") do set "HH=%%i" & set "min=%%j"
set /a timenumber=(10%HH% %% 100)*60+(10%min% %% 100)
:: ---------------------- Ende Zeitaufdröselung nach Numerisch ----------------------
:: Vergleichen der gesetzten Zeit mit dem Letztem "lastupperlimit" . wenn "lastupperlimit"
:: größer als "presenttime" dann Verschiebung im naechsten Ordner bzw erstmal Anzeigen im CMD Fenster
if not defined OldDate set /a OldDate=alldays-1 & set "MoveTime=%timenumber%" & goto :eof
if not defined NowFileDate set NowFileDate=%alldays%
if %NowFileDate% lss %alldays% if %timenumber% lss %MoveTime% if not %OldDate% equ %alldays% set /a NR+=1,NowFileDate+=1
if %timenumber% lss %MoveTime% if %OldDate% equ %alldays% goto :eof
:: Wenn alles klappt so wie es Anzeigt entferne @echo
@echo move "%name%" "%folder% %NR%"