Funktionierender regulärer Ausdruck (CMD) um aus einer Textdatei bestimmte Zeilen mit " zu entfernen?

Eigentlich könnte man ja meinen, dass dieses Problem recht leicht zu lösen sein müsste. 

Aber aus irgendwelchen Gründen ist es das nicht, da " irgendwie für alles einen Sonderstatus hat. 

Also was ich gerne wissen würde: 

 Wie bzw. mit welchem regulären Ausdruck kann man (z.b mit einem Grepbefehl?) alle Zeilen suchen, die mit einem " anfangen ohne, dass dies zu unerwarteten Verhalten führt und z.b der Pfad nicht mehr gefunden wird bzw. keine Ausgabedatei erzeugt wird?  

 Ich hab es jetzt bereits mit dutzenden verschiedensten Varianten versucht: grep '^"' grep '^\"' grep -E '^\"' grep '^\".*' 

und noch X weiteren Variationen, aber entweder werden einfach nur alle Zeilen ausgegeben, die irgendwo im Text ein " enthalten oder es gibt Probleme mit der Erzeugung der Ausgabedatei.

Wichtig wäre in diesem Fall jedoch, dass nur der Anfang (erste Charakter) einer Zeile überprüft bzw. gematched werden soll. Scheinbar soll dies bei Grep ja mit ^ möglich sein und ein Escapen der " mit \. Funktioniert aber alles nicht!

GPT hab ich auch schon gefragt, aber der Bot ist mit der Frage komplett überfordert und gibt nur hanebüchenen Mist aus, der entweder nicht funktioniert oder sehr langsam ist (z.b Ansätze mit Powershell)

Also bevor ich jetzt noch meinen kompletten PC / CPU zu Schrott fahre: Gibt es eine effektive und schnelle Möglichkeit wie man diese Operation aus einer Textdatei alle Zeilen ohne " am Anfang = delete (möglichst mit verfügbaren Onboardmitteln) ausführen kann und falls ja wie?  

Im Idealfall sollten die Zeilen, die nicht gematched werden auch einfach direkt aus der Datei herausgelöscht werden können, anstatt jedesmal den kompletten Inhalt zu kopieren.

Irgendein Tipp?

PC, IT, programmieren, Batch, Batchprogrammierung, cmd, Code, Programmiersprache, Textbearbeitung, PowerShell, Regulärer Ausdruck, Windows 10, CMD Befehl
Bashskript Problem?

Ich habe hier ein Bashskript, welches Dateien überwacht (noch nicht vollständig und absolut unoptimiert). Ich weiß, dass es Tools gibt, aber es ist ein Projekt für die Uni und deshalb ist Optimierung und Effizienz nicht wirklich wichtig. Ich möchte damit die Grundlagen des Shellscriptings einfach etwas lernen.

Das ist bisher das Script:

#!/bin/bash


echo "Das Skript wurde gestartet. Der Typ Ihres Betriebssystem ist "\"$OSTYPE\""."


# If-Abfrage, die das Betriebssystem erkennt und den Pfad zum überwachten Ordner oder Datei festlegt # HIER BITTE DIE PFADE ZUM ZU ÜBERWACHENDEN ORDNER EINTRAGEN   
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    BASE_DIRECTORY=" " # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Linux
elif [[ "$OSTYPE" == "darwin"* ]]; then
    BASE_DIRECTORY="/Users/name/Library/CloudStorage/GoogleDrive-email@gmail.com/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = MacOs
elif [[ "$OSTYPE" == "win32" || "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
    BASE_DIRECTORY="/g/Meine Ablage/Uni/TestOrdner" # Übergibt dem überwachten Ordner eine Variable, wenn Betriebssystem = Windows
else    
    echo "Das Betriebssystem ist unbekannt." # Wenn das Betriebssystem unbekannt ist, wird eine Fehlermeldung ausgegeben
    exit 1
fi


DIRECTORY="$BASE_DIRECTORY" # Pfad zum Ordner
FILE="$BASE_DIRECTORY/Datei.txt" # Pfad zur Datei   
FILE2="$BASE_DIRECTORY/Datei2.txt" # Pfad zur Datei2 


cd "$BASE_DIRECTORY" || {
    echo "Wechsel zu $BASE_DIRECTORY fehlgeschlagen!" # Wechselt in den TestOrdner oder gibt eine Fehlermeldung aus
    exit 1;
}



# Funktion, um zu überprüfen, ob Dateien gelöscht wurden
checkIfDeleted() {
    if [ ! -f "$FILE" ]; then 
        echo "Die Datei \"$(basename "$FILE")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -f "$FILE2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde gelöscht, umbenannt oder verschoben."
    elif [ ! -d "$DIRECTORY" ]; then
        echo "Der Ordner \"$(basename "$DIRECTORY")\" wurde gelöscht, umbenannt oder verschoben."
    fi
}


# Speichert den "ursprünglichen" Hash-Wert der Dateien
ORIGINAL_HASH=$(md5 -q "$FILE")
ORIGINAL_HASH2=$(md5 -q "$FILE2")


checkIfEdited() {
    if [ ! -f "$FILE" ]; then # Wenn $FILE nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -f "$FILE2" ]; then # Wenn $FILE2 nicht existiert, dann wird das Skript hier beendet
    return
    fi


    if [ ! -d "$DIRECTORY" ]; then # Wenn $DIRECTORY nicht existiert, dann wird das Skript hier beendet
    return
    fi


    # Berechnet den aktuellen Hash-Wert der Dateien
    CURRENT_HASH=$(md5 -q "$FILE")
    CURRENT_HASH2=$(md5 -q "$FILE2")


    # Hash-Werte werden verglichen
    if [ "$CURRENT_HASH" != "$ORIGINAL_HASH" ]; then
        echo "Die Datei \"$(basename "$FILE")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH="$CURRENT_HASH"
    elif [ "$CURRENT_HASH2" != "$ORIGINAL_HASH2" ]; then
        echo "Die Datei \"$(basename "$FILE2")\" wurde bearbeitet."
        # Ursprünglicher Hash-Wert wird für zukünftige Überprüfungen aktualisiert
        ORIGINAL_HASH2="$CURRENT_HASH2"
    fi
}


while true; do # Endlosschleife, die die Funktionen "checkIfDeleted" und "checkIfEdited" alle 10 Sekunden ausführt
    checkIfDeleted
    checkIfEdited
    sleep 10
done

Ja, ich weiß, welche Probleme das Skript mit sich bringt, aber ich habe ein anderes Problem:

Wenn jemand das Skript nutzen möchte, muss er die Pfade seiner Dateien einfügen und sogar neue Variablen definieren.

Man könnte das doch so machen, dass das Skript die Liste des Ordners einliest und dann auf alle Dateien direkt zugreifen muss, ohne dass man sie in das Skript einfügen muss.

Also irgendwie mit dem Befehl "ls". Ich weiß aber nicht, wie ich das implementieren soll.

Kann mir wer helfen bitte?

Visual Basic, Linux, HTML, Webseite, VBA, Bash, Batch, cmd, Code, lua, MySQL, PHP, Programmiersprache, Python, Script, Python 3
Hilfe bei diesem einfachen Bash-Skript?

Ich will dass das Programm wenn ich auf "gruppen anzeigen" klicke mir alle Gruppen im System im Dialig angezeigt werden und das Programm beendet wird wenn ich auf "beenden" klicke. Aber irgendwie kommt entweder ein Fehler dass bei mir das "fi" fehlt was nicht stimmt. Oder es werden die Gruppen auch angezeigt wenn ich auf beenden klicke. Ich habe versucht die If-Anweisungen zu löschen und dann nach  wahl=$(cat $inhalt) ein echo zu machen. Und bei mir wird immer "1" ausgegeben egal auf was ich drücke. Wobei ich eig. Wenn ich auf "beenden" klicke dann sollte "Ende" rauskommen" oder ?

#!/bin/bash
#
inhalt=$(mktemp)
auswahl(){
 dialog --backtitle "Elemente anzeigen"  --title "Elemente zeigen" \
        --cancel-label "Abbruch" \
        --checklist "Bitte treffen Sie Ihre Auswahl!" 10 50 3 \
        "1." "Gruppen anzeigen im Dialig" on \
        "Ende." "Programm beenden" off \
        2>$inhalt
 fehler=$?
 clear
 if [ $fehler != 0 ] ;
  then
   echo "Da ist ein Fehler aufgetreten"
   echo "Fehler-Nr.: $fehler"
   rm $inhalt
   exit 1
 fi
 wahl=$(cat $inhalt)


 if [ "$wahl" == "1." ]; then
     dialog --backtitle "Ausgabe von Gruppen" \
            --msgbox "$(groups)" 20 60 \
 fi


 rm $inhalt
}


while :
 do
  auswahl
 done


Betriebssystem, Technik, Linux, HTML, Webseite, Java, JavaScript, VBA, Bash, Batch, cmd, Informatik, Informationstechnik, PHP, Programmiersprache, Python, Shell, Webentwicklung
Pyhton Daten updaten?

Hallo

ich bin neu in der Python Welt und habe eine kleine Frage bezüglich arbeiten mit Daten (.txt)

Ich will ein Geldaufnahme Programm schreiben wo ich Daten speichern muss und regelmäßig updaten will.

Zum Programm: Nachdem mein Lohn kam will ich alle meine Kontostände aktualisieren und diese sollen dann gespeichert werden und auf Wunsch aufrufbar sein.

(Erfundenen Zahlen)

Hier ist das Dictunary in der TXT datei:

Bestände = {

"Sparbuch" : 1000,

"Girokonto" : 2000,

"Depot : 3000,

"Bar" : 4000

}

Mein Lohn (3.000€ ) kommt und ich verteile das Geld auf die Konten.

Hier fange ich in der Geldaufnahme.py Datei an:

Sparbuch1 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Girokonto2 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Depot3 = input("Was ist der Aktuelle stand? ")

Bar4 = input("Was ist der Aktuelle stand? ") #verändert um +1.000

Jetzt zu meinem ersten Problem:

Wie kann ich die Daten aus der txt datei in meiner .py Datei als Dictunary rüber holen und dann selbständig bearbeiten?

bzw

Die Bestände: Sparbuch/ Girokonto und Bar verändern sich um jeweils 1.000€

wie kann ich das in der Txt datei aktualisieren?

Zu meinem zweiten Problem:

Ich will nur den Bestand des Depotes wissen wie lese ich das gezielt aus der txt datei aus?

zu meinem Dritten Problem:

Ist txt datei das richtige hierfür?

Ich hoffe es war verständlich

danke schonmal im voraus 

HTML, Webseite, Java, JavaScript, Batch, cmd, PHP, Programmiersprache, Python, Webentwicklung, Python 3
Batch Fake Virus schadet nachhaltig?

Also ich hab halt so ein Fake virus gecodet, und habe gehört man soll das als Batch Datei machen, aber nen Freund hat gemeint es könnte schädlich sein.

Also schadet das irgendwie? oder kann cih es bedenkenlos nutzen? oder gibt es einen Weg wie cih den Schaen verhindern kann?

Hier mal der Code ist sehr simpel:

@echo off

title [Virus by sunnyhax]

mode 37,42

echo.

echo Ihr Computer wurde infiziert...

timeout -t 2 >nul

COLOR 2D

mode 35,40

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 36,41

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 37,42

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 38,43

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 39,44

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 40,45

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 41,46

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 42,47

ping 1.2.3.4 -n 1 -w 1000 > nul

echo ... mit NYANAY

echo.

echo Das tut uns leid :(

echo.

echo.

timeout -t 2 >nul

mode 43,48

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 44,49

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 45,50

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 46,51

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 47,52

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 48,53

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 49,54

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 50,55

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 51,56

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 52,57

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 53,58

cd %userprofile%\desktop\

ping 1.2.3.4 -n 1 -w 1500 > nul

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 48,53

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 47,52

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 46,51

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 45,50

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 44,49

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 43,48

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 42,47

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 41,46

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 40,45

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 39,44

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 38,43

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 37,42

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 36,41

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

md "%RANDOM%" > nul

echo.

echo Ein bisschen haben wir dir noch mitgebracht :)

echo Guck auf deinen Desktop :O

timeout -t 2 > nul

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 48,53

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 47,52

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 46,51

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 45,50

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 44,49

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 43,48

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 42,47

echo.

echo Windows-Firewall deaktiviert!

echo.

echo LOL.

echo.

timeout -t 2 >nul

mode 43,48

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 44,49

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 45,50

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 46,51

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 47,52

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 48,53

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 49,54

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 50,55

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 51,56

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 52,57

ping 1.2.3.4 -n 0 -w 1000 > nul

mode 53,58

echo.

echo Ihr System verbindet sich nun mit dem Internet...

start https://www.nyan.cat/index.php?cat=tacnayn#

echo Ahhhhhhh, Microsoft defender ist zu stark, leider müssen wir doch gehen:0 > "Liesmich.txt"

timeout -t 4 >nul

:h

shutdown -s -t 30>nul

;exit

Bitte nur ernstgemeinte Antworten, hab keinen Bock auf systemschrott :)

Danke schonmal LG

Computer, Windows, Programm, programmieren, Batch, Programmiersprache, Batch-Datei, Windows 11
Wie lese ich mittels Batch-File (CMD) eine einzelne Zeile aus?

Guten Abend zusammen,

ich möchte mir eine Batch-File schreiben, mit der ich den Namen meines WLAN-Netzwerks (SSID) auslese. Dazu lasse ich mir eine Zusammenfassung der Drahtlosinformationen mittels netsh wlan show all anzeigen. Diesen umfangreichen Text filtere ich nach dem Begriff Status mittels netsh wlan show all | find /N "Status".

Das Ergebnis sind auf meinem System vier Einträge, die exemplarisch wie folgt aussehen:

[64]   Status                 : Verbunden
[79]   Status des gehosteten Netzwerks : Nicht verfügbar
[92]Status des gehosteten Netzwerks
[94]   Status                : Nicht verfügbar

Ich weiß, dass in Zeile 65 der aktive/aktuelle WLAN-Netzwerkname (SSID) hinterlegt ist. Diese sieht folgendermaßen aus:

SSID                  : FRITZ!Box 7520 SZ

In meinem Fall müsste ich den Text in Zeile 65, der nach einem Leerzeichen nach dem Doppeltpunkt beginnt, extrahieren und in einer Variablen abspeichern.

Ich weiß, dass unter der CMD-Eingabeaufforderung eine Variablenzuweisung nicht nach dem klassischen Prinzip

var = Berechnung

erfolgt, sondern stattdessen eine for-Schleife zu verwenden ist. Mein Ansatz dafür lautet

for /f %%a in ('netsh wlan show all ^|find /N "Status"') do (set "strSSID=%%a")

Jedoch müsste ich die Laufvariable %%a (?) auf 1 begrenzen, weil ich sonst den letzten Eintrag ([94]) abspeichere.

Meine Fragen lauten daher konket:

  1. Wie limitiere ich die Laufvariable einer for-Schleife?
  2. Wie lese ich dann die um eins inkremetierte Zeile aus?
  3. Wie extrahiere ich den Text dieser Zeile nach dem Doppelpunkt sowie dem einen Leerzeichen bis zur EOL und speichere diesen in einer Variable ab?

Ich glaube, dass ich der Lösung schon recht nah bin, aber hier komme ich leider nicht weiter. Ich freue mich, über jeden Hinweis und weitere Hilfe.

Viele Grüße,

Christian

bat, Batch, cmd

Meistgelesene Beiträge zum Thema Batch