Batch für Anfänger :-)

Hallo,

habe mich soeben entschlossen, mich ein bissel in die Batch-Programmierung einzuarbeiten und in Zukunft häufig wiederholende Arbeitsschritte mittels Batch-Dateien erledigen zu lassen. Auf dem Gebiet der Batch-Programmierung bin ich Anfänger.

Ich habe mir bei http://www.sysinternals.com das Programm „SDelete.exe“ installiert. Auf der Seite des Herstellers finden sich zu dem Programmaufruf folgende Angaben:

SDelete is a command line utility that takes a number of options. In any given use, it allows you to delete one or more files and/or directories, or to cleanse the free space on a logical disk. SDelete accepts wild card characters as part of the directory or file specifier.

sdelete [-p passes] [-s] [-q]
sdelete [-p passes] -z [drive letter]

-p passes Specifies number of overwrite passes
-s Recurse subdirectories
-q Don’t print errors (quiet)
-z Cleanse free space

Zu Übungszwecken möchte ich einfach das Programm mit dem Parameter „z“ aufrufen. Dazu schrieb ich folgenden Code (Zeilennummer zur besseren Lesbarkeit von mir hier eingefügt):

1 REM Öffnen der MS-DOS Konsolle
2 cmd.exe
3 REM Wechseln ins jeweilige Verzeichnis
4 cd c:\Program Files\SDelete
5 REM Aufrufen des Programms mit entsprechendem Parameter
6 sdelete.exe –z

Bis zu Programmzeile 4 wird auch alles ordnungsgemäß ausgeführt. Wie bekomme ich es hin, dass nun das Programm „sdelete.exe“ mit dem entsprechenden Parameter „-z“ gestartet wird?

Mit meinem obigen Code funktioniert es nämlich nicht.

Gruß,

Pierre

Hallo Pierre

4 cd c:\Program Files\SDelete

 cd "c:\Program Files\SDelete"

Grüße

CMБ

Hi Semjon,

vielen Dank für dein Antwort. Jedoch löst sie mein Problem nicht. Unabhängig davon, ob ich in Zeile vier deinen Code stehen habe oder meinen ursprünglichen, das Programm „sdelete.exe“ wird nicht ausgeführt.

Gibt es denn einen Befehl wie etwas „RUM sdelete.exe“ oder so ähnlich, den ich eventuell eingeben muss?

Gruß,

Pierre

Hallo Pierre

vielen Dank für dein Antwort. Jedoch löst sie mein Problem
nicht. Unabhängig davon, ob ich in Zeile vier deinen Code
stehen habe oder meinen ursprünglichen, das Programm
„sdelete.exe“ wird nicht ausgeführt.

Poste Doch mal Dein Bat-File, so
wie es konkret aussieht.
Ich vermute mal, er scheitert an Zeile 1.

Grüße

CMБ

Hi Semjon,

mein Quellcode (Die Zeielnnummerierung ist nicht im Quellcode enthalten!) sieht bisher so aus:

1 @echo off
2 REM Öffnen der MS-DOS Konsolle
3 cmd.exe
4 REM Wechseln ins jeweilige Verzeichnis
5 cd "c:\Program Files\SDelete"
6 REM Aufrufen des Programms mit entsprechendem Parameter
7 start "sdelete.exe"


Komischerweise funktioniert auch folgender Batch nicht:


    
    1 @echo off
    2 start "c:\Program Files\SDelete\sdelete.exe"
    
    
    Um noch einmal mein Ziel zu erläutern:
    
    Eventuell wäre es sinnvoll schrittweise vorzugehen. Welchen Code brauche ich, um einfach das das Programm "sdelete.exe" in dem Ordner "c:\Program Files\SDelete\sdelete.exe" auszuführen? Um die Parameterübergabe kümmen wir uns dann später. :smile:
    
    Gruß,
    
    Pierre

Hallo

Eventuell wäre es sinnvoll schrittweise vorzugehen. Welchen
Code brauche ich, um einfach das das Programm „sdelete.exe“ in
dem Ordner „c:\Program Files\SDelete\sdelete.exe“ auszuführen?
Um die Parameterübergabe kümmen wir uns dann später. :smile:

Vorgehensweise:

    1. Du verschiebst das Programm sdelete.exe in den Ordner C:\sdelete,
      so dass das Programm an der Position C:\sdelete\sdelete.exe gefunden
      werden kann.
    1. Du erzeugst eine .bat Datei mydelete.bat in C:\sdelete, in
      welcher steht

    REM ------ das ist der Anfang ------
    set args=
    c:\sdelete\sdelete.exe %args%
    REM ------ das ist das Ende -------

    1. jetzt kannst Du hinter args die Parameter schreiben (z.b. „-z“)
      und den Prozess durch anklicken starten.
      (bzw. durch aufruf von: c:\sdelete\mydelete.bat von
      der Kommandozeile

Gibst Du keinen Parameter (args) bei sdelete an, so macht das Programm
auch nichts. Das ist schon in Ordnung.

Grüße

CMБ

Hi Pierre,

Bei mir (XP)

Funktioniert das:

>sdel.bat
@echo off
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %1
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %2
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %3
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %4
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %5
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %6
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %7
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %8
„C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe“ -p 1 -s %9

cls
echo Datei(en) %1 %2 %3 %4 %5 %6 %7 %8 %9 wurden gelöscht.

Ist noch n kleiner Trick dabei mit den Parametern, kannst bis zu 9 Dateien auf einmal löschen (musst aber nicht), entweder in der Befehlszeile mit: sdel bla.txt bla2.txt bla.mp3

Oder Alternativ kannst auch unter Windows einfach n paar Dateien markieren und auf die Batchdatei ziehen.

Aber Vorsicht!! Ordner werden auch samt Unterordner gelöscht! Also nicht Sdel C:\ eingeben…! Wenn dir das zu riskant ist (man könnte sich ja mal verschreiben) mach lieber den Parameter -s wieder weg…

HTH
Matze

hi matze

wäre sowas nicht sinnvoller???

>sdel.bat

@echo off
 :start
if "%1" == "" goto ende
"C:\Dokumente und Einstellungen\matze\Desktop\sdelete.exe" -p1 -s %1
shift
goto start

 :ende
cls
echo Datei(en) %\* wurden gelöscht.

damit kannst du soviele parameter angeben, wie du tippen kanst…

erwin

1 Like

COOL !
Hey Erwin,

der Befehl war mir noch gar nicht bekannt! Das ist ja super! Da tun sich ja voll die Möglichkeiten auf…

Danke!

mfg
Matze