Batch-Programmierung: Beispiele
- Nummerierter Listeneintrag
Regedit.exe
BearbeitenEine kleine Batchdatei, um mit regedit.exe direkt einen bestimmten REG-Zweig anzuspringen:
set LastKey="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix"
set Key=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit
reg add %Key% /f /v "LastKey" /d %LastKey%
start regedit.exe
Erläuterung:
- LastKey ist der Reg-Schlüssel, der als Letztes angezeigt wurde und dieser wird beim Start von regedit direkt angesprungen, diesen Schlüssel kann man nach Belieben anpassen.
- Key ist der Reg-Schlüssel in dem sich der Wert "LastKey" befindet.
LastKey wird mittels reg add in die Registry eingespielt und danach wird regedit gestartet. Das Ganze funktioniert allerdings nur, wenn regedit.exe noch nicht läuft.
Und hier noch eine kleine Batchdatei, um mit regedit.exe Werte aus der Registry auszulesen:
set Key="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit"
regedit.exe /e c:\temp\inhalt.reg %Key%
Achtung! Die Datei inhalt.reg ist im Unicode-Format. Ein Tipp dazu: Der type-Befehl kann Unicode lesen.
TaskList-Abfrage
BearbeitenEine Routine um das Laufen eines Prozesses mittels tasklist.exe festzustellen. In diesem Beispiel wird geprüft, ob Prozess.exe läuft.
@echo off
set ProgEXE=Prozess.exe
set tempdatei=%temp%\TempDatei.txt
tasklist /FI "IMAGENAME eq %ProgEXE%" /FO CSV>%tempdatei%
for /F "skip=2 tokens=1 delims=," %%f in (%tempdatei%) do (
echo gefiltert: [%%f]
if "%%f"==""%ProgEXE%"" echo Prozess %ProgEXE% läuft
goto ende
)
echo Prozess %ProgEXE% läuft nicht!
goto ende
:ende
del %tempdatei%
Alternativ, ohne obige temporäre Datei 'tempdatei' zu benötigen, kann man beispielsweise unter Windows XP folgendes verwenden:
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL
IF %ERRORLEVEL% == 1 (
ECHO NOT Running.
GOTO Ende
) ELSE (
ECHO Running.
GOTO Ende
)
Dienste einrichten
Bearbeiten@echo off
prompt -$G
echo.
echo ### Manuelle Dienste ###
echo.
call:M helpsvc "Hilfe und Support"
call:M ImapiService "IMAPI-CD-Brenn-COM-Dienste"
echo.
echo ### nicht benötigte Dienste Deaktivieren ###
echo.
call:D cisvc "Indexdienst"
call:D ERSvc "Fehlerberichterstattungsdienst"
echo.
echo ### Automatische Dienste ###
echo.
call:A CryptSvc "Kryptografiedienste
call:A MSIServer "Windows Installer"
echo.
echo.
echo Fertig!
echo.
pause
goto:eof
:A
echo %2 auf Automatisch
set Parameter=auto
net start %1
goto machen
:M
echo %2 auf Manuell
set Parameter=demand
net stop %1
goto machen
:D
echo %2 auf Deaktiviert
set Parameter=disabled
net stop %1
goto machen
rem Systemstart Gerätetreiber, der vom Startladeprogramm geladen wird.
rem system Gerätetreiber start während der Kernelinitialisierung.
rem auto automatischer start, nach systemstart, vor Benutzeranmeldung.
rem demand Dienst, der manuell gestartet werden muss.
rem disabled Dienst deaktivieren
:machen
echo on
sc config %1 start= %Parameter%
@echo off
echo.
echo.
goto:eof
Windows XP SP2: installierte Patches/Updates auflisten
BearbeitenZeigt unter Windows XP mit Service Pack 2 alle zusätzlich installierten Patches/Updates an.
@echo off
set RegHotfixListe=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix
set RegHotfixInfo=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3
for /F "delims=\ tokens=7" %%f in ('reg query "%RegHotfixListe%"') do (
set HotFixNr=%%f
CALL :Anzeigen
)
echo.
echo.
pause
goto:eof
:Anzeigen
reg query "%RegHotfixListe%\%HotFixNr%" /v Installed | FIND "0x1">NUL
if "%errorlevel%"=="0" (
set installiert=ja
call:KB_Info
) ELSE (
set installiert=nein
)
echo %HotFixNr% - Ist Installiert: %installiert%
if not "%InstalledBy%"=="" echo %HotFixNr% installiert von %InstalledBy%
if not "%InstalledDate%"=="" echo %HotFixNr% am %InstalledDate%
echo.
goto:eof
:KB_Info
set InstalledBy=
for /F "tokens=3" %%c in ('reg query "%RegHotfixInfo%\%HotFixNr%" /v InstalledBy 2^>NUL ^| FIND "InstalledBy"') do (
set InstalledBy=%%c
)
set InstalledDate=
for /F "tokens=3" %%c in ('reg query "%RegHotfixInfo%\%HotFixNr%" /v InstalledDate 2^>NUL ^| FIND "InstalledDate"') do (
set InstalledDate=%%c
)
goto:eof
Printdateien direkt an den Drucker senden
BearbeitenSendet einzelne Druckdateien an im Netzwerk freigegebene Drucker. Eignet sich besonders bei Standard Drucksprachen wie Postscript und HPGL/2.
@echo off
rem "pl.bat" sendet einzelne Druckdateien an bel. Drucker direkt.
rem eignet sich besonders bei Standard Drucksprachen wie Postscript und HPGL/2.
rem Laesst sich in Windows bequem einbinden, z.B rechte Maustaste - Senden an Plotter
:voreingestellt
set server=192.168.0.5
rem server --- IP von Printserver/oder Name von Freigaberechner ---
set druckerbeschreibung=192.168.0.5 Freigabename EPSON
rem druckerbeschreibung --- damit der Drucker leichter identifiziert werden kann ---
set drucker=EPSONNT
rem drucker --- das muss der Freigabename im Netzwerk/auf dem Freigaberechner sein ---
if '%1' == 'drucker01' goto drucker01
if '%1' == 'drucker02' goto drucker02
if '%1' == 'canon' goto canon
goto datei
:drucker01
shift
goto datei
:drucker02
set server=42.1.1.240
set druckerbeschreibung=HP DJ 755CM im Sekretariat
set drucker=hpdj755-tcp
shift
goto datei
:canon
set server=192.168.0.1
set druckerbeschreibung=Canon s/w Laser im EG
set drucker=CanonLBP
shift
goto datei
:datei
if '%~1' == '' goto aufruf
goto plot
:plot
echo.
echo Dateiname : %1
echo Druckserver : %server%
echo Freigabename: %drucker%
echo Beschreibung: %druckerbeschreibung%
echo.
print /d:\\%server%\%drucker% '%~1'
goto:eof
:aufruf
echo.
echo aufruf : pl [plotter] Datei
echo plotter : drucker01, drucker02, canon, (voreingestellt ist drucker01)
echo.
Anmerkung zur Nutzung dieses Scriptes:
- Der Printbefehl schickt die Datei OHNE Interpretation direkt an den Drucker. Eine Bilddatei im JPEG-Format würde statt der Grafik also lediglich einen haufen wirrer Zeichen ergeben.
- Der Drucker muss in der Lage sein, selbst ASCII-Zeichen zu verarbeiten und auszugeben. Dies ist bei älteren Druckern (vor ca. 1996 sicher) immer der Fall. Heute beherrschen meist nur noch PostScript-fähige Drucker diese Fähigkeit. "Billigen" GDI-Druckern muss man etwas auf die Sprünge helfen mit dem verwendeten "Druckprozessor" im Windows-Druckertreiber.
- Zum Umschalten zunächst die Druckerübersicht öffnen - Zu finden unter Start|Drucker und Faxgeräte
- Dann die Eigenschaften des gewünschten Druckers ausrufen (Rechtsklick|Eigenschaften)
- Auf dem Reiter "Erweitert" den Button "Druckprozessor..." klicken
- In dem erscheinenden Dialogfeld gibt es 2 Felder mit Einträgen. Im rechten Feld (Standartdatentypen) findet sich neben verschiedenen anderen auch der Eintrag "Text". Diesen markieren und dann alles mit OK wieder schließen.
Der Druckprozessor von Windows ist nun in der Lage, Ausgaben entsprechend zu Interpretieren und dem GDI-Drucker als Grafik zu liefern. Es können aber nur stur 80 Zeichen (maximal) auf ca. 60 Zeilen verteil werden. Manchmal sind es bis zu 66 Zeilen.
Copy
BearbeitenKopieren von Dateien.
Der Befehl
copy test.txt c:\temp
kopiert die Datei test.txt aus dem aktuellen Ordner in den Ordner c:\temp.
Der Befehl
copy c:\test.txt c:\temp
kopiert die Datei test.txt aus dem Ordner c:\ in den Ordner c:\temp
Datei- und Pfadnamen mit Sonderzeichen ( hier das Leerzeichen sowie ()[]{}^=;!'+,`~ ) müssen beim Copy=Kommando und den meisten anderen Kommandos in doppelten Anführungszeichen (") angegebenen werden, zum Beispiel:
copy f:\Beispiel.cmd "c:\Dokumente und Einstellungen\Siegfried\Eigene Dateien\"
Wie man sieht, kann man beide Schreibweisen mischen. Dagegen können sich mehrfach vorhandene Anführungszeichen wieder aufheben. Deshalb müssen vom Benutzer angegebene Anführungszeichen erst entfernt werden, bevor man in der eigenen Batchdatei neue setzt:
@echo off echo Kopiert eine Datei in das eigene Benutzerprofil. rem Die Anführungszeichen in der folgenden Zeile werden nur benötigt, rem damit zwischen dem Doppelpunkt und der Eingabe ein Abstand entsteht. set /p name="Bitte geben Sie einen Dateinamen an: " rem In der folgenden Zeile werden alle Anführungszeichen entfernt, da rem nach dem Gleichheitszeichen kein Ersattext folgt, siehe auch set/?. rem Das Set-Kommando kommt sowohl beim Variablennamen als auch beim rem Inhalt ohne Anführungszeichen aus. set name=%name:"=% rem An dieser Stelle sollte erst geprüft werden, ob die Datei überhaupt rem existiert, aber das würde den Rahmen hier sprengen. copy "%name%" "%HOMEDRIVE%%HOMEPATH%\Eigene Dateien"
Theoretisch könnte man auch mit den kurzen Dateinamen (8+3) arbeiten, aber diese sind nicht eindeutig und können von Laufwerk zu Laufwerk unterschiedlich sein. Daher besser nicht verwenden!
Kombiniert in der gegebenen Reihenfolge zwei oder mehrere durch "+" verbundene Textdateien in einer neuen Gesamtdatei.
In diesem Zusammenhang muss auf die Bedeutung der Parameter "/A" (für ASCII-Format, der Standardwert) und "/B" (für Binär-Format ) eingegangen werden, die jedem Dateinamen in obigem Beispiel mit einem Leerzeichen Abstand vorangehen können. DOS-Textdateien enthalten ein Dateiendezeichen (Dezimal 26, Hexadezimal 1A). Beim Kopiervorgang darf in der Gesamtdatei nur als letztes Zeichen ein Dateiendezeichen erscheinen, sonst würde der Text nach der ersten Endmarkierung nicht mehr angezeigt. "copy" kopiert ohne das abschließende Zeichen und fügt als letztes wieder eines zur Gesamtdatei hinzu.
Möchte man Dateien mit binären Inhalten zusammenfügen (z.B. PostScript-Dateien, die auch binäre Abschnitte enthalten können), so würde ohne Parameter "/B" ebenfalls nur bis zu einem zufällig vorkommenden Dateiendezeichen kopiert und damit das Ergebnis unbrauchbar.
copy /b "seite 1.ps" + /b "seite 2.ps" "Neue Datei.ps"
Als Zieldatei sollte man keine der Quelldateien verwenden, da möglicherweise sonst der Inhalt überschrieben wird.
Message-Ping
BearbeitenMit Hilfe des folgenden Scripts kann man Windows um eine nützliche Funktionalität erweitern. Mit Hilfe von mping erhält man eine Nachricht, sobald der gepingte Computer wieder erreichbar ist.
Um das Script global zu verwenden, muss es z.B. als "mping.cmd" in "Windows-Installationsordner\System32" gespeichert werden und kann von nun an z.B. mit "mping google.com" aufgerufen werden.
@echo off
:: wenn kein remote Host angegeben ist, dann gehe zu :Syntax
IF [%1]==[] GOTO Syntax
IF [%1]==[/?] GOTO Syntax
IF [%1]==[/h] GOTO Syntax
IF [%1]==[/help] GOTO Syntax
:mainloop
:: pinge den Host 1 mal und leite die Ausgabe nach 'nul' um (keine sichtbare Ausgabe)
ping %1 -n 1 >nul
:: speichere den Errorlevel in die Variable 'status'
set status=%errorlevel%
:: sende eine Nachricht sobald der remote Host online ist
if %status%==0 (msg %username% %1 online && exit 0)
:: minimalistische Fortschrittsanzeige
(Set /P i=.) < NUL
:: sleep workaround über eine hypothetische Auswahl, die nach 30 Sekunden automatisch beantwortet wird.
:: Wer vorher X drückt, kann den Ablauf auch beschleunigen.
:: Die Variante ist meiner Meinung nach besser als 'ping localhost -n 10 >nul'
:: ab windows 7 aufwärts geht auch 'TIMEOUT /T 10 /NOBREAK > nul'
:: (timeout sekunden /NOBREAK verhindert abbrechen durch tastendruck)
choice /T 30 /N /C X /D X > NUL
:: gehe zurück zum anfang
goto mainloop
:Syntax
echo.
echo Syntax: %~n0 [Hostname oder IP]
echo.
echo mping
echo.
echo Pingt einen offline Host und gibt eine Meldung
echo aus, sobald er wieder online ist
echo.
Defrag mit Endlos-Schleife
BearbeitenDas eingebaute Defrag-Tool erlaubt ja immer nur die gleichzeitige Defragmentierung eines Laufwerks. Außerdem sind oftmals mehrere Durchgänge nötig, bis das Laufwerk wirklich vollständig defragmentiert ist. Mit dieser kleinen Batch Datei werden alle Partitionen immer wieder hintereinander defragmentiert. Wenn man wieder arbeiten will, kann man einfach das Eingabefenster schließen. Auch bei laufendem defrag passiert dabei nichts, weil defrag im Hintergrund die aktuelle Arbeit sauber beendet.
Damit aber nicht defekte Laufwerke einfach blind defragmentiert werden, habe ich eine etwas aufwendige Prozedur eingebaut, die die Laufwerke mit chkdsk erst überprüft. Wenn dabei ein Fehler auftritt, wird mit fsutil das dirty Bit gesetzt. Das bewirkt, dass beim nächsten Systemstart die Fehler behoben werden. Außerdem werden die Partitionen in dem loop ausgelassen, welche schon als dirty markiert sind.
Eine kleine Routine war auch nötig, damit Netzwerklaufwerke ausgelassen werden.
@echo off
cd /d C:\
:loop
for %%i 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 (
if exist %%i:\NUL call:defrag %%i
)
echo.
echo pause...
:: Vorherige Variante 'ping localhost -n 10 >NUL'
choice /t 30 /n /c x /d x >NUL
goto loop
:defrag
call:check %1
if "%ok%"=="nein" (
echo Laufwerk %1: wird ausgelassen
echo.
goto:eof
)
echo.
echo.
echo chkdsk %1: /v
chkdsk %1:
if %errorlevel% NEQ 0 (
if %errorlevel% NEQ 2 (
echo %1: chkdsk Fehler!!!
echo Errorlevel: %errorlevel%
echo.
echo setzte dirty-Bit:
fsutil dirty set %1:
echo.
echo Versuche Reparatur
chkdsk %1: /v /x
if %errorlevel% EQU 2 (
echo Fehler bereinigt!
) else (
echo Errorlevel: %errorlevel%
echo.
goto:eof
)
)
)
echo defrag %1: -f
defrag %1: -f
if %errorlevel% NEQ 0 (
pause
exit
)
rem pause...
ping localhost -n 1 >NUL
goto:eof
:check
set ok=nein
net use | find /i "%1:" >NUL
if not errorlevel 1 (
echo %1: ist ein Netzlaufwerk
goto:eof
)
fsutil dirty query %1:
for /F "tokens=5" %%f in ('fsutil dirty query %1:') do (
if not "%%f"=="NICHT" (
rem Laufwerk ist als fehlerhaft markiert
goto:eof
)
)
set ok=ja
goto:eof
Als Alternative gibt es das Open Source Program JkDefrag, welches auch alle Laufwerke nacheinander defragmentiert.
Dateiinformationen anzeigen
BearbeitenDieses Batch-Skript zeigt Informationen über die Datei, die als Parameter übergeben wird, an. (beispielsweise per Drag&Drop auf die Batch-Datei)
@echo off
echo Attribute...................: %~a1
echo Laufwerk....................: %~d1
echo kompletter Pfad.............: %~f1
echo Dateiname...................: %~n1
echo Ordnerpfad..................: %~p1
echo kompletter Pfad (kurze Form): %~s1
echo Aenderungsdatum.............: %~t1
echo Dateierweiterung............: %~x1
echo Dateigroesse................: %~z1
pause
Hinweis: Falls die Attribute des eigenen Batch-Skripts ausgelesen werden sollen, so muss der Parameter Null verwendet werden (Beispielsweise %~p0). Eine Kombination ist auch möglich, z.B: %~dp0 (Laufwerk + Pfad)
Alle verfügbaren PCs im aktuellen Netzwerk suchen
BearbeitenDieses Batch-Skript pingt alle IP-Adressen eines IP-Bereichs an und zeigt dann die PCs an, die verfügbar sind.
@echo off
if exist ips.txt del ips.txt > nul
echo Bitte geben Sie den ersten Teil der IP ein:
set /p ip=
for /L %%N IN (1, 1, 255) DO (
echo Die IP: %ip%%%N wird nun angepingt
ping %ip%%%N -n 1 -w 1 | find "TTL" && echo %ip%%%N >> ips.txt
)
cls
type ips.txt
pause >nul
Hinweis: Die Datei ips.txt wird nicht gelöscht, damit man sie für weitere Zwecke benutzen kann.
Hosts Datei mit einem Aliasnamen und der aktuellen IP-Adresse aktualisieren
BearbeitenHäufig werden Webserver oder ähnliche Programme unter Angabe eines Aliasnamens installiert, damit sie leicht auf einen anderen Rechner verschoben werden können, falls der ursprüngliche Rechner defekt ist. Oder die Aplikation läuft unter VM-Ware auf einen Laptop bei dem sich die IP-Adressen häufig ändern. Dann kann mit dem Skript der Hostnamenalias mit der aktuellen IP-Adresse aktualisiert werden. Idealerweise wird das Script automatisch beim Start von Windows oder beim Anmelden des Anwenders ausgeführt.
@echo off
set HOST_ALIAS=myserver myserver.mydomain.org
set HOST_FILE=%SystemRoot%\System32\drivers\etc\hosts
set TEMP_FILE=%TEMP%\hosts.tmp
REM vorhandenen Eintrag entfernen und den Rest in TEMP-Datei schreiben
type %HOST_FILE% | find /v "myserver" > %TEMP_FILE%
REM Neuen Eintrag wieder hinzufügen
for /F "tokens=15" %%i in ('ipconfig ^| find "IP Ad"') do set IP=%%i
echo %IP% %HOST_ALIAS%>>%TEMP_FILE%
echo ## Added %IP% %HOST_ALIAS% to the hostsfile
REM Temp-File nach %SystemRoot%\System32\drivers\etc\hosts kopieren
REM Die Datei Hosts darf nicht mit "move" verschoben werde, sondern muss kopiert werden, da sonst der Hostname nicht gefunden werden kann.
copy /y %TEMP_FILE% %HOST_FILE%
del /F /Q %TEMP_FILE%
Windowsversion herausfinden
BearbeitenMit dieser Batchdatei findet man heraus, welche Windowsversion verwendet wird. Das ist nützlich, wenn man mit bestimmten Pfaden arbeitet, die je nach Betriebssystem verschieden sind. Quelle
@echo off
rem diese Batch prueft das OS
VER |find /i "Windows 95" >NUL
IF NOT ERRORLEVEL 1 GOTO 95
VER |find /i "Windows 98" >NUL
IF NOT ERRORLEVEL 1 GOTO 98
VER |find /i "Windows Millennium" >NUL
IF NOT ERRORLEVEL 1 GOTO ME
VER | find "XP" > nul
IF %errorlevel% EQU 0 GOTO XP
VER | find "2000" > nul
IF %errorlevel% EQU 0 GOTO 2000
VER | find "NT" > nul
IF %errorlevel% EQU 0 GOTO NT
VER | find "Microsoft Windows [Version 6.0" > nul
IF %errorlevel% EQU 0 GOTO Vista
VER | find "Microsoft Windows [Version 6.1" > nul
IF %errorlevel% EQU 0 GOTO W7
VER | find "Microsoft Windows [Version 6.2" > nul
IF %errorlevel% EQU 0 GOTO W8
VER | find "Microsoft Windows [Version 6.3" > nul
IF %errorlevel% EQU 0 GOTO W81
VER | find "Microsoft Windows [Version 5" > nul
IF %errorlevel% EQU 0 GOTO 2003
goto unknown
goto end
:unknown
echo unknown
goto end
:95
echo 95
goto end
:98
echo 98
goto end
:ME
echo ME
goto end
:NT
echo NT
goto end
:2000
echo 2000
goto end
:XP
echo XP
goto end
:Vista
echo Vista
goto end
:W7
echo W7
goto end
:W8
echo W8
goto end
:W81
echo Windows 8.1
goto end
:2003
echo 2003
goto end
:end
Alternative:
@ECHO OFF
FOR /F "tokens=2 delims=[]" %%a IN ('VER') DO FOR /F "tokens=2" %%b IN ("%%a") DO SET VersionNumber=%%b
FOR /F "tokens=1 delims=." %%a IN ("%VersionNumber%") DO SET VersionMajor=%%a
FOR /F "tokens=2 delims=." %%a IN ("%VersionNumber%") DO SET VersionMinor=%%a
FOR /F "tokens=3 delims=." %%a IN ("%VersionNumber%") DO SET VersionBuild=%%a
IF %VersionMajor%==6 (
IF %VersionMinor%==4 (
SET VersionName=Windows 10
) ELSE (
IF %VersionMinor%==3 (
SET VersionName=Windows 8.1
) ELSE (
IF %VersionMinor%==2 (
SET VersionName=Windows 8
) ELSE (
IF %VersionMinor%==1 (
SET VersionName=Windows 7
) ELSE (
IF %VersionMinor%==0 (
SET VersionName=Windows Vista
)))))
) ELSE (
IF %VersionMajor%==5 (
IF %VersionMinor%==2 (
SET VersionName=Windows Server 2003
) ELSE (
IF %VersionMinor%==1 (
SET VersionName=Windows XP
) ELSE (
IF %VersionMinor%==0 (
SET VersionName=Windows 2000
)))
) ELSE (
IF %VersionMajor%==4 ( ECHO 4
IF %VersionMinor%==90 (
SET VersionName=Windows ME
) ELSE (
IF %VersionMinor%==10 (
SET VersionName=Windows 98
) ELSE (
IF %VersionBuild%==1381 (
SET VersionName=Windows NT 4.0
) ELSE (
IF %VersionMinor%==00 (
SET VersionName=Windows 95
))))
) ELSE (
IF %VersionMajor%==3 (
SET VersionName=Windows 3.1
))))
ECHO %VersionNumber%
ECHO %VersionMajor%.%VersionMinor%.%VersionBuild%
ECHO %VersionName%
PAUSE
TEMP-Verzeichnis löschen
BearbeitenIm %TEMP%-Verzeichnis sammeln sich mit der Zeit viele Dateien und Unterverzeichnisse an. Mit diesem Skript werden alle auf einmal gelöscht:
@echo off
call:clean %TEMP%
IF NOT "%TEMP%" == "%TMP%" (
call:clean %TMP%
)
pause
goto:eof
:clean
del /q "%~1\*.*"
FOR /D %%D IN ("%~1\*") DO (
rmdir /s /q "%%D"
)
goto:eof
(Wahrscheinlich erhält man ein paar Fehler, wenn z.B. Dateien geöffnet sind)
- Neue Version
Eine Version für Win XP/2000/WinVista/Win7
Echo off
del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Temp\*.*"
del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Temporary Internet Files\*.*"
del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Verlauf\*.*"
del /f /s /q "%windir%\Temp\*.*"
del /f /s /q "%windir%\Prefetch\*.*"
del /f /s /q "%windir%\Temp\*.*"
rmdir /s /q "%HOMEPATH%\Lokale Einstellungen\Temp\"
rmdir /s /q "%windir%\Prefetch\"
diskperf -n
ipconfig /flushdns
FLV/MP4/WAV zu MP3 konvertieren (FFMPEG + Batch)
BearbeitenFFMPEG.EXE nach C:\ kopieren und Batch Datei in einem beliebigen Ordner mit FLV/MP4/WAV Dateien anlegen. Sobald die Batch Datei gestartet wird, geht sie alle FLV/MP4/WAV Files durch und encodiert diese als MP3 (VBR ~226 kbit). Am Ende werden alle MP3 Dateien in den Ordner "MP3" verschoben.
mkdir "MP3"
FOR %%X IN (*.flv) DO C:\ffmpeg.exe -y -i "%%X" -q:a 0 "%%~nX.mp3"
FOR %%X IN (*.mp4) DO C:\ffmpeg.exe -y -i "%%X" -q:a 0 "%%~nX.mp3"
FOR %%X IN (*.wav) DO C:\ffmpeg.exe -y -i "%%X" -q:a 0 "%%~nX.mp3"
FOR %%X IN (*.mp3) DO MOVE "%%X" "MP3"
Vorteile: Stabil und leistungsstark (FFMPEG + Konsole), keine überladene GUI, man muss keine Bloatware installieren, nutzt Mehrkernprozessoren aus, variable Bitrate, kommt mit Sonderzeichen klar (z.B. "ı"), kopiert nicht nur den Audiostream und Video nach "null" sondern enkodiert alles neu (keine "defekten" MP3s mehr bzw. keine "Sprünge" oder sonstiges mehr)
Einfach den Text in eine Textdatei kopieren und zur .bat machen.