Anführungszeichen in der Suchzeichenkette des Befehls findstr maskieren
Frohe Weihnachtszeit,
falls jemand ein Tipp auf der Schnelle parat hat, wäre es schön...
Das Anführungszeichen in der Suchzeichenkette des Befehls findstr lässt sich nicht maskieren:
Folgendes habe ich probiert, jedoch ohne Erfolg:
\"
^"
""
Alternative Lösungsvorschläge wären natürlich möglich.
Gruß
evinben
falls jemand ein Tipp auf der Schnelle parat hat, wäre es schön...
Das Anführungszeichen in der Suchzeichenkette des Befehls findstr lässt sich nicht maskieren:
:Bei unzulässigen Zeichen in der Bezeichnung (in dem Dateinamen) Warnung ausgeben und erneut zur Eingabe auffordern.
ECHO "%Name-Suffix_of_Differential-VHD%" | findstr "\ / : * ? " < > |" && (
ECHO Ein Dateiname darf keines der folgenden Zeichen enthalten: \/:*?"<>|
goto :M5
)
Folgendes habe ich probiert, jedoch ohne Erfolg:
\"
^"
""
Alternative Lösungsvorschläge wären natürlich möglich.
Gruß
evinben
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196220
Url: https://administrator.de/forum/anfuehrungszeichen-in-der-suchzeichenkette-des-befehls-findstr-maskieren-196220.html
Ausgedruckt am: 15.04.2025 um 11:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo evinben,
dein Script hat einen entscheidenden Knackpunkt:
Du schickst einen in Anführungszeichen eingepackten String an FINDSTR und prüfst anschließend, ob Anführungszeichen vorhanden sind. Ja klar sind dann Anführungszeichen vorhanden. Zudem wirst du das Ganze ohne DelayedExpansion wohl kaum sicher hinbekommen.
Ich bin mir nicht ganz sicher ob das schon der Weisheit letzter Schluss ist. Teste mal ein bisschen.
Grüße
rubberman
dein Script hat einen entscheidenden Knackpunkt:
Du schickst einen in Anführungszeichen eingepackten String an FINDSTR und prüfst anschließend, ob Anführungszeichen vorhanden sind. Ja klar sind dann Anführungszeichen vorhanden. Zudem wirst du das Ganze ohne DelayedExpansion wohl kaum sicher hinbekommen.
setlocal EnableDelayedExpansion
echo("!Name-Suffix_of_Differential-VHD!"|findstr /rc:"..*[<>|\\/:?\"].*." >nul &&echo Mist.
endlocal
Grüße
rubberman
Hallo evinben,
ich schlage eine Lösung mit Inline-VBScript vor:
Gruß
Friemler
ich schlage eine Lösung mit Inline-VBScript vor:
@echo off & setlocal
:: Irgendwelche Befehle
:: die
:: den Dateinamen erzeugen
set "Name-Suffix_of_Differential-VHD=Irgendwas"
set "VBScript=%TEMP%\CheckFilename.vbs"
> "%VBScript%" echo.intResult = 0
>>"%VBScript%" echo.
>>"%VBScript%" echo.If WScript.Arguments.Count ^> 0 Then
>>"%VBScript%" echo. Set objRegExp = new RegExp
>>"%VBScript%" echo. objRegExp.Pattern = "[\\/:\*?<>""]"
>>"%VBScript%" echo. If objRegExp.Test(WScript.Arguments(0)) Then intResult = 1
>>"%VBScript%" echo.End If
>>"%VBScript%" echo.
>>"%VBScript%" echo.WScript.Quit intResult
cscript /nologo "%VBScript%" "%Name-Suffix_of_Differential-VHD%"
if ERRORLEVEL 1 (
echo Ein Dateiname darf keines der folgenden Zeichen enthalten: \/:*?^<^>^|"
) else (
echo Alles klar
)
del "%VBScript%"
Gruß
Friemler
moin,
einen hab ich noch - eine Alternative:
Gruß Phil
einen hab ich noch - eine Alternative:
@echo off
:Eingabe
set /p "X=Dateiname Eingeben: " ||goto :Eingabe
setlocal enabledelayedexpansion
for /f tokens^=2delims^=\/:*?^<^>^|^" %%i in (" !x! ") do endlocal&echo Falsche Eingabe&goto :Eingabe
if !os! equ %OS% endlocal
echo rem Hier gehts weiter.
pause
Gruß Phil