[Batch] Eine Datei Namens "Üben.dat" löschen

o0Pascal0o

Bruder von Johnny English
Hallo,

wie kann ich per Batch-Befehl eine Datei names Üben.dat löschen?

Per:

Code:
del /f /q Üben.dat
klappt es nicht.

Vielen Dank

Pascal
 
AW: Eine Datei Namens "Üben.dat" löschen

Und was erhältst Du für eine Fehlermeldung?
Versuche mal

del /f /q ?ben.dat

Damit kannst Du zumindest ermitteln, ob es an dem Umlaut liegt.
Aber Vorsicht, das ? dient als Platzhalter - eine "oben.dat" würde damit ebenso gelöscht.
 
AW: Eine Datei Namens "Üben.dat" löschen

also da steht dann wenn ich das per Batch mache: ³ben.dat konnte nicht gelöscht werden. Aber wenn ich diese ³ nehme in dem Befehl anstelle des Ü´s, dann kommt ne andere Fehlermeldung, dass ein Pipe-Zeichen nicht gelsösch werden konnte.. also "Pipezeichen"Ben.dat.
 
AW: Eine Datei Namens "Üben.dat" löschen

Hier ein paar Zeilen Code, die ich über praktisch jeden Script geschrieben habe:

Code:
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul

Dann musst du nur noch im Text diese Buchstaben als Variable aufschreiben.
Also so:

Code:
del /f /q %Uue%ben.dat



Versuchs mal so, dann hast du garantiert das "Ü" ausgewählt.


Wobei das von Jim Duggan wahrscheinlich genau das selbe macht.
Ich finde es so nur viel einfacher, solange du nicht vergisst, alle Buchstaben mit den entsprechenden Variablen auszutauschen.

Edit:
Sein Link bietet aber einige Dinge, die sehr praktisch sind^^
Hab mal sporadisch drüber gelesen und mir gefällts^^
 
Zuletzt bearbeitet:
Also ich habe es mal mit ü = Â� probiert. Jedoch klappt das nicht. Es ist nämlich ein kleines ü. In meiner Batch steht auch anstelle vom ü = Â� ein Rechteck.
 
Dein Problem: Die Eingabeaufforderung spricht vom Prinzip her nur Englisch und kann somit keine Umlaute, die muss man ihr über die richtige Codepage unterjubeln.

Wenn Dein Editor zwischen Codepages (heißt manchmal auch Kodierung) umschalten kann, dann speichere Deine Batch Dateien mit der Codierung WesteuropäischCodepage 850 ab und schon sind die Umlautprobleme weg.
 
Also es soll schon so sein, dass die batch-datei auch auf einem anderen System ohne Umstellungen funktionieren soll. Von daher soll alles auf standard bleiben - nur Ü´s möchte ich angeben können.
 
Was hat das Speichern mit der korrekten Codierung mit "nicht Standard" zu tun? :unsure:

Du speicherst die deutschen Umlaute in der Default Einstellung falsch ab, das ist Dein Problem. Diese Suchen und ersetzen Sachen sind Müll, wähle die von Microsoft seit Windows 95 vorgesehene und nie geänderte Methode aus oder verwende einen Editor, der es richtig macht und Du hast keine Probleme mehr.

Wenn die jemand anders auf seinem System bearbeitet, und beim Speichern zershreddert ist das nicht Dein Problem, Du kannst ja einen Kommentar in die Batch schreiben, in der die korrekte Vorgehensweise erklärt wird:
"Achtung! Diese Datei enthält deutsche Umlaute und ***muss*** daher als CP850 (Codepage 850) codiert abgespeichert werden."

Klar sehen dann die Umlaute zerschreddert aus, wenn man sie im normalen Windows Editor (Notepad) öffnet, aber der ist eh doof :D
 
Das Problem mit Batch und Umlauten ist die Codierung.

Es gab/gibt zwar ein Programm mitdem man die Umlaute automatisch umstellen konnte, aber wenn man es einfach schnell haben will, dann mach ich es so:

Code:
echo äüöÄÜÖ > test.txt

je nach dem gewünschten Zeichen kopier ich es dann aus der test.txt und lass in der Batch per Suchen&Ersetzen durchlaufen.
 
Oh Mann.... es kann doch wirklich nicht so schwer sein, mal eben die korrekte Codepage einzustellen.

Die Konsole und somit auch Batch Dateien arbeiten nun einmal mit Codepages und das sogar schon seit DOS 3.3.

Einfach mal in der offenen Kommandokonsole den Befehl CHCP eingeben und schauen was da angezeigt wird. Mit exakt der selben Codepage muss auch eine Batch Datei gespeichert werden, wenn sie etwas anderes als reine ASCII Zeichen beinhaltet.

z.B. in Notepad++ tippt man den ganzen Kram einfach ein und dann geht man auf
Kodierung → Zeichensatz → Westeuropäisch → OEM850
und danach speichert man den ganzen Ramsch ab und alles funktioniert. Bei anderen Editoren gibt es ähnliche Funktionen, zumindest wenn sie etwas taugen.
 
Warum versucht denn niemand das, was ich gepostet habe?

Ich verwende das schon eine ganze Weile und das funktioniert einwandfrei. Damit konnte ich in den Konsole Umlaute anzeigen lassen und auch Dateien mit Umlauten benennen lassen.

Und ich finde das so ziemlich einfach.
 
@Palladin007
das verstehe ich irgendwie nicht, ich hoffte es geht auch irgendwie einfacher. Also sowas wie, anstelle vom "ü" nehem ein "{4" & es klappt.

@Razorblade
der gibt mir dann "äüöÄÜÖ" in einer Text-datei aus. Wozu soll das jetzt gut sein?

@QuHno
Die Batch-Datei soll aber auch auf anderen System laufen & ohne, dass die dann Notepad++ haben oder sonst irgendetwas umstellen müssen.
 
Das ist gar nicht schwer

Hier mal ein ganz spontan geschriebenes Beispiel:

Code:
@echo off

chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul

echo     O============================================O
echo     ³////////////////////////////////////////////³
echo     ³//                                        //³
echo     ³//  Dies ist ein Beispiel-Programm.       //³
echo     ³//                                        //³
echo     ³//                                        //³
echo     ³//  In diesem Programm k%oe%nnen durch       //³
echo     ³//  die ersten Zeilen auch Umlaute,       //³
echo     ³//  wie %Aae%, %Ooe%, oder %Uue% geschrieben werden.  //³
echo     ³//  Daf%r ist es nur n%oe%tig, die Umlaute   //³
echo     ³//  durch die entsprechende Variable zu   //³
echo     ³//  ersetzen.                             //³
echo     ³//                                        //³
echo     ³//        %Aae%  -  Aae                       //³
echo     ³//        %Ooe%  -  Ooe                       //³
echo     ³//        %Uue%  -  Uue                       //³
echo     ³//        %ae%  -  ae                        //³
echo     ³//        %oe%  -  oe                        //³
echo     ³//        %  -  ue                        //³
echo     ³//        %ss%  -  ss                        //³
echo     ³//                                        //³
echo     ³//  Das sind die Variablennamen und       //³
echo     ³//  m%ssen nur noch in %%%-Zeichen gesetzt  //³
echo     ³//  werden.                               //³
echo     ³//                                        //³
echo     ³//  Bedenke dabei aber, dass die          //³
echo     ³//  entsprechende Variable mehr Platz     //³
echo     ³//  braucht, als der Buchstabe, der am    //³
echo     ³//  Ende im Program zu lesen ist.         //³
echo     ³//                                        //³
echo     ³//  Wenn du dir den Text einmal so        //³
echo     ³//  durch liest, wirst du fest stellen,   //³
echo     ³//  dass viele Umlaute darin vorhanden    //³
echo     ³//  sind und normal geschrieben werden.   //³
echo     ³//  In der Datei selbe sind aber nur      //³
echo     ³//  Variablen enthalten und keine         //³
echo     ³//  normalen Umlaute.                     //³
echo     ³//                                        //³
echo     ³//  Probiere es aus, es braucht nur ein   //³
echo     ³//  bisschen %Uue%bung. ;)                    //³
echo     ³//                                        //³
echo     ³//                                        //³
echo     ³//  Einen Tipp habe ich noch:             //³
echo     ³//                                        //³
echo     ³//  Schreibe den Text ganz normal und     //³
echo     ³//  passe dein Men% (wenn du eins hast)   //³
echo     ³//  so an, dass es gut aussieht und       //³
echo     ³//  danach ersetzt du alle Umlaute mit    //³
echo     ³//  der entsprechenden Variable.          //³
echo     ³//                                        //³
echo     ³//  Dazu gehst du erst auf "Bearbeiten"   //³
echo     ³//  und danach auf "Ersetzen".            //³
echo     ³//                                        //³
echo     ³////////////////////////////////////////////³
echo     O============================================O
pause>nul


Das komplett in eine bat- oder eine cmd-Datei hinein kopieren und lesen^^


PS: Ignoriere einfach die Verschiebungen im Text, das hat alles seine Ordnung.






Bei Eingabe von CHCP gibt er: 850 aus.

Ja, das ist der falsche "Bereich" (oder wie man das nennt)
Diese Zeile:
Code:
chcp 1252>nul
Die ändert das auf 1252. Solange das so ist, kann man Umlaute verwenden. Und deshalb werden diese Umlaute in Variablen gespeichert, wo sie im eigentlichen "Bereich" (nämlich 850) dann diesen kleinen Code haben, wie z.B. „.
Ich finde das so schlicht einfacher, weil die Variablen kann ich mir merken^^
Und zum Schluss wird das wieder auf den normalen Bereich, also 850, geändert.
Das ist noch mit dabei, da das bei 1252 glaube irgendwelche Probleme gemacht hat.
Aber genau weiß ich es auch nicht mehr.
 
Inhalt völlig normal geschrieben und als CP850 gespeichert:
Code:
echo off
echo Däutsche Ümlöite ßind kein Problem mit CP850!
pause
Anhang entpacken, reinsehen um sicher zu gehen, dass ich nichts bösartiges untergebracht habe :)devil :ROFLMAO:), nicht ändern und probehalber ausführen.
Anhang anzeigen cp850.zip
 
Wenn eine klassische Batch Datei kompatibel mit mehreren Windows Sytemen sein soll, also portabel, nutzt es nichts, die Buchstaben im Editor mit der falschen CP zu verwenden. Man kann zwar vermeintlich die CP der CMD umschalten, aber das verursacht unter Umständen Probleme, je nach dem was man in der Konsole anstellt, z.B. wenn man die Ausgabe von anderen Programmen mittels der ">" und "|" Befehle auslesen lässt, geht die set Methode mit den Variablen u.U. in die Hose (Zu Problemen mit set tippe set /? in das Konsolenfenster, es gibt da ein paar Pferdefüße, wenn man damit zu wild in der Gegend herum fuhrwerkt, denn damit werden Umgebungsvariablen gesetzt). Macht es einfach gleich richtig und verwendet einen Editor, der es kann. Windows Notepad kann es nicht, das verwendet CP1252, da es Unicode unterstützt, die Kommandokonsole jedoch per default bei einem deutschen System auf CP850 eingestellt.

Unter WinXP (bei W7x32 soll es auch noch gehen, hab ich aber mangels installiertem 32 Bit W7 nie ausprobieren können) kann man noch in der Kommandokonsole

edit

eingeben und schon haben sich alle Probleme erledigt. Unter W7x64 klappt das leider nicht mehr, denn MS hat den Kommandokonsolen Editor da nicht eingebaut (wahrscheinlich sollte man sich da eh angewöhnen, direkt die Powershell zu benutzen, macht weniger Ärger und man kann damit mehr Unsinn anrichten ;)). Für W7x64 empfiehlt sich ein Editor wie Notepad++. Leeres Dokument öffnen, Codepage auf OEM850 einstellen, völlig normal die Batch inklusive aller Umlaute eintippen, speichern, glücklich sein. Keine potentiell fehlerbehafteten Umsetzungen oder Tabellen nötig. NP++ man auch prima unter XP verwenden, hat auch den Vorteil, dass er Syntaxhighlighting kann.

Für Umfangreicheres Scripting empfiehlt es sich sowieso, erst garnicht die normale CMD zu nehmen, denn sie hat einfach viel zu viele Limitierungen.

Ansonsten, so lange es sich ausschließlich um Textausgabe oder normale direkte Befehle dreht, mache es wie es Palladin007 vorgeschlagen hat und kopiere den Teil:
Code:
@echo off

chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
an den Anfang Deines Batch Scripts und jedes Mal, wenn Du einen Umlaut brauchst, ersetze den einfach durch die Variable. In Deinem Beispiel:

Code:
del /f /q %Uue%ben.dat


Das kannst Du beliebig erweitern, z.B. wenn Du z.B. das Deutsche Paragraphen Zeichen haben willst, fügst du zwischen den CHCP Zeilen folgendes ein:
Code:
set para=§
und dann kannst Du im Code wieder die Variable verwenden:
Code:
echo %para%aragraph mit Paragraphen Zeichen anstelle des P

Du kannst Die Variablen natürlich auch alle anders benennen, aber aufpassen, Variablen Namen sind nicht case sensitive, d.h. eine Unterscheidung zwischen Groß- und Kleinbuchstaben findet nicht statt, also ein A wird wie ein a behandelt, das ist auch der Grund, warum Paladin007 die Variable für das Ü Uue und nicht einfach Ue genannt hat. ;)
 
Oben