Batch - Ausrufezeichen in Dateiname

...komplette Frage anzeigen

1 Antwort

Ich brauche für die Auswertung den Quellcode. Mit normalen Mitteln hat Batch keine Probleme mit Ausrufezeichen.

kamel91 27.02.2014, 00:26

Der Quellcode soweit:

@echo off
@chcp 1250
cls

set listname=filelist3.js
set location=%~dp0

echo var indexpath = "%location:\=/%"; >%listname%
echo. >>%listname%
echo Das Inhaltsverzeichnis wird erstellt.
echo Bitte haben Sie einen Moment Gedult...

Setlocal EnableDelayedExpansion
echo var files = new Array( >>%listname%    
for /f "tokens=*" %%j in ('dir /s /b /A-D %location%^|findstr /I "\.wav \.mp3 \.wma \.mp4"') do ( REM erlaubte Formate
    set var1=%%j
    set var2=!var1:^^!=xAUSRUFx! REM <- Das hier funktioniert leider nicht... :(
    set var3=!var2:\=/!
    echo "!var3!", >>%listname%
)
echo ""); >>%listname%

start %~dp0\%listname%
endlocal
exit

Ich befasse mich erst seit Sonntag mit Batch - bin immer offen für konstruktive Kritik ;)

0
S1r1us13 27.02.2014, 23:47
@kamel91

Das Problem liegt an dem SETLOCAL-Befehl. Ohne den funktionieren die Ausrufezeichen.

Um das Problem mit den Variablen zu umgehen, kannst du eine zusätzliche Datei erstellen (hier Vartemp.bat genannt):

@echo off

set listname=filelist3.js
set location=%~dp0

echo var indexpath = "%location:\=/%"; >%listname%
echo. >>%listname%
echo Das Inhaltsverzeichnis wird erstellt.
echo Bitte haben Sie einen Moment Geduld...

echo var files = new Array( >>%listname%
for /f "tokens=1,2,* delims=: " %%J in ('dir /s /b /A-D "%location%"^|findstr /N /I "\.wav \.mp3 \.wma \.mp4" ^|findstr /N "."') do (
    >>Vartemp.bat echo @set var%%J=%%L
    >>Vartemp.bat echo @set var%%J=%%var%%J:\=/%%
    >>Vartemp.bat echo @echo "%%var%%J%%", ^>^>%listname%
)
call Vartemp.bat
del Vartemp.bat >nul 2>nul

echo ""); >>%listname%

start %~dp0\%listname%
pause
exit

Die zusätzliche Datei übernimmt das Festlegen der Variablen, das Verändern von ihnen und das Schreiben in die .JS-Datei.

Die Datei wurde erfolgreich getestet unter Windows XP Prof. SP3.

Das Problem ist jedoch, dass jetzt weder %- noch &-Zeichen funktionieren werden. Aber irgendwie musst du die Variablen aufrufen. Welches Zeichen du lieber haben willst, überlass ich dann dir xD

0

Was möchtest Du wissen?