batschi
Goto Top

Batch Autostart Umbenennen-Löschen Zeitpunkt

ich möchte alle Dateien der Festplatte/Netzwerks mit der Endung *.bak umbenennen nach *.ba1. (oder evt. löschen)
Dies soll zu einem bestimmten Zeitpunkt geschehen. Datum oder letzter Tag des Monats.
Desweiteren soll diese Batchdatei dieses Batsch in den Autostartordner kopieren, wo es jeden Tag beim Hochfahren gestartet wird.
Wer kann mir hier weiterhelfen?
MfG

Content-Key: 105203

Url: https://administrator.de/contentid/105203

Printed on: April 19, 2024 at 22:04 o'clock

Member: miniversum
miniversum Jan 05, 2009 at 10:10:42 (UTC)
Goto Top
Ungetesteter Versuch:
@echo off
ECHO copy "%~0" "%USERPROFILE%\Startmen*\Programme\Autostart\%~nx0"  
FOR /F "delims=" %%i in ('dir /s /b %HOMEDRIVE%\*.bak') do ECHO ren "%%i" "%%~ni.ba1"  
Die ECHOs ist nur zu testzwecken drin und zeigt an was pasieren würde. Wird es entfernt wird wirklich kopiert/umbenannt.
Member: batschi
batschi Jan 05, 2009 at 10:22:49 (UTC)
Goto Top
vielen Dank
das batch löscht wohl direkt alle bak-Dateien.
Es sollen diese jedoch zuerst nach ba1 umbenannt werden und dann gelöscht werden.
Ferner ist das Batch im Autostartordner nicht vorhanden.
Und den Zeitpunkt der Umbenennung/Löschung möchte ich gerne im Batch eingeben.
Ganz schon unverschämt von mir.
Trotzdem nochmals Danke
MfG
Member: miniversum
miniversum Jan 05, 2009 at 10:58:42 (UTC)
Goto Top
ren "%%i" "%%~ni.ba1"
Sollte eigentlich die Dateien umbenennen

ECHO copy "%~0" "%USERPROFILE%\Startmen*\Programme\Autostart\%~nx0"
Sollte den Batch sich selbst ind en Autostartordner kopieren, vorausgesetzt das ECHO wurde entfernt wie beschrieben.

Und den Zeitpunkt der Umbenennung/Löschung möchte ich gerne im Batch eingeben.

Ok das habe ich überlesen. Dafür gibt es den AT befehl oder du führst die batch als geplanten Tast aus, dann muss ie auch nicht im autostart liegen.
Member: batschi
batschi Jan 05, 2009 at 11:09:25 (UTC)
Goto Top
hi nochmals
gibt es auch eine Möglichkeit, dass sich ein Batchprogramm jeden Tag von alleine aufruft und prüft ob das vorgegebene Datum erreicht ist und dann den Löschvorgang durchführt?
Member: miniversum
miniversum Jan 05, 2009 at 11:23:33 (UTC)
Goto Top
Das geht natürlich auch.
Wie gesagt entweder mit dem AT befehl (der erstellt einen geplanten task) oder so:
In einer Textdatei steht das Datum der nächsten ausführung
Dann kann man zu begin der Batch folgende Zeilen einfügen:
@echo off
set /p rundate=<nextstart.txt
if "%rundate%" neq "%date%" goto:eof  
Member: batschi
batschi Jan 05, 2009 at 12:02:18 (UTC)
Goto Top
Kanst du mir es schreiben dass ich hier das Datum eingeben kann, also ohne zusätzliche Datei.
Besser wäre noch ein Zusatz mit uhrzeit.
Also Ausführungszeitpunkt um 14:20:00 am 10.01.2009

Desweiteren soll das gesamte Netzwerk, also alle laufwerke und das Netzwerk durchsucht werden. Gibt es hierzu noch eine Erweiterung?
Member: miniversum
miniversum Jan 05, 2009 at 12:20:22 (UTC)
Goto Top
Das in die Batch einzutragen ist möglich. Besser wäre allerdings ein geplanter task. Die uhrzeit macht direkt in Batch sont keinen sinn, da sie genau um diese uhrzeit gestertet werden müßte oder duernt als schleife laufen müßte.
Alles in allem sollte das dann so gehen:
@echo off
if "10.01.2009" neq "%date%" goto:eof  

ECHO copy "%~0" "%USERPROFILE%\Startmen?\Programme\Autostart\%~nx0"  

FOR %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir %%a:\ >NUL 2>NUL && verarbeite %%a
)
goto:eof

:verarbeite
FOR /F "delims=" %%i in ('dir /s /b %1:\*.bak') do ECHO ren "%%i" "%%~ni.ba1"  
goto:eof
Member: batschi
batschi Jan 05, 2009 at 14:22:31 (UTC)
Goto Top
irgendwo ist hier ein Fehler drin
passiert nichts, auch wenn ich das Datum auf 4.1.09 setze
Member: miniversum
miniversum Jan 05, 2009 at 16:30:03 (UTC)
Goto Top
Da darf auchnichts passieren außer du setzt das datum auf "05.01.2009"
Member: batschi
batschi Jan 05, 2009 at 18:06:35 (UTC)
Goto Top
tut mir leid
bitte selber testen
es passiert bei mir nichts
Member: miniversum
miniversum Jan 05, 2009 at 18:24:45 (UTC)
Goto Top
Folgende Batch läuft bei mir:
@echo off
if "05.01.2009" neq "%date%" goto:eof  
echo Heute wird das ausgeführt
Das entspricht ja dem Prinzip.
Ist das datumsformat bei dir identisch eingestelt?
Noch mal der Hinweis: Ein geplanter tast wäre eine Wesentlich bessere Lösung
Member: batschi
batschi Jan 05, 2009 at 18:28:44 (UTC)
Goto Top
hallo
ich weiss, dass ich zäh bin, aber es ist mir sehr wichtig.
alles bei mir ist idebtisch.
Wann wird es denn ausgeführt, irgendwann heute von alleine ?
Wie geht es mit einem geplanten Task?
MfG
Member: miniversum
miniversum Jan 05, 2009 at 18:42:40 (UTC)
Goto Top
Wenn du die Batch startest und dieses Datum ist heute wird die Batch weiter ausgeführt, sonst beendet.
Einen geplanten task kans tud entweder über die Kommandozeile mit dem at befehl anlegen oder du gehst in die Systemsteuerung auf "Geplante Tasks".
Dort kanns tud einen Geplanten tast dan hinzufühgen. Dort kans tud dan auf die Batch verweisen udn die Kontrolle in der Batch selbst brauchst du dan nicht mehr.
Member: batschi
batschi Jan 05, 2009 at 19:29:46 (UTC)
Goto Top
ja , wie gesagt trotz aller versuche wird bei mir nichts ausgeführt?
Stimmt das datum wirklich so?
Member: miniversum
miniversum Jan 05, 2009 at 19:48:04 (UTC)
Goto Top
Ich weiß ncith wie auf deinem PC das Datumsformat ist.
Üffne mal die eingabeaufforderung (ausführen, cmd, enter)
Dort gibst du jetzt ein
echo %date%
So wie es dort steht sollte es auch bei dir dan eingetragen werden.
Weiterhin kansnt zu zur besseren fehlersuche das "@echo off" in "@echo on" ändern.
Dan solltest du sehen was ausgeführt wird
Member: batschi
batschi Jan 05, 2009 at 20:01:27 (UTC)
Goto Top
Datumformat passt, es muss irgendein anderer Fehler
er zeigt an
dir a: 1>Null 2>Null &&verarbeite a )
dir b: 1>Null 2>Null &&verarbeite b )
dir c: 1>Null 2>Null &&verarbeite c )
...
dir x: 1>Null 2>Null &&verarbeite x )
aber an den Dateien ändert sich nichts
Member: miniversum
miniversum Jan 05, 2009 at 20:08:36 (UTC)
Goto Top
Dann versuchs mal damit:
@echo off
if "05.01.2009" neq "%date%" goto:eof  

ECHO copy "%~0" "%USERPROFILE%\Startmen?\Programme\Autostart\%~nx0"  

FOR %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do verarbeite %%a
goto:eof

:verarbeite
dir %%1:\ >NUL 2>NUL || goto:eof
FOR /F "delims=" %%i in ('dir /s /b %1:\*.bak') do ECHO ren "%%i" "%%~ni.ba1"  
goto:eof
Member: batschi
batschi Jan 05, 2009 at 20:19:55 (UTC)
Goto Top
der befehl verarbeite ist entweder falsch geschrieben oder wird nicht gefunden.
kannst du es auch selber testen?
Ist Startmen? richtig?
Member: miniversum
miniversum Jan 05, 2009 at 20:45:28 (UTC)
Goto Top
Ichhatte ien cal vergessen:
@echo off
if "05.01.2009" neq "%date%" goto:eof  

ECHO copy "%~0" "%USERPROFILE%\Startmen?\Programme\Autostart\%~nx0"  

FOR %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do call:verarbeite %%a
goto:eof

:verarbeite
dir %1:\ >NUL 2>NUL || goto:eof
FOR /F "delims=" %%i in ('dir /s /b %1:\*.bak') do ECHO ren "%%i" "%%~ni.ba1"  
goto:eof
Member: batschi
batschi Jan 05, 2009 at 21:01:49 (UTC)
Goto Top
Verzeichnisnamen oder dateiträgerbezeichnung ist falsch
0 Dateien kopiert
Member: miniversum
miniversum Jan 06, 2009 at 09:21:58 (UTC)
Goto Top
Habs jetzt bei mir testen können und so Funktioniert es bei mir:
@echo off
if "06.01.2009" neq "%date%" goto:eof  

copy "%~f0" "%USERPROFILE%\STARTM~1\Programme\Autostart\%~nx0"  

FOR %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do call:verarbeite %%a
goto:eof

:verarbeite
dir %1:\ >NUL 2>NUL || goto:eof
echo Suche nach Dateien in %1:\
FOR /F "delims=" %%i in ('dir /s /b %1:\*.bak') do ECHO ren "%%i" "%%~ni.ba1"  
goto:eof