Also was ich versuche, ist, jedes Zeichen in einer Zeichenfolge außer dem ersten in einem Parameter zu entfernen.Abrufen des ersten Zeichens von Parameter/String
This is the closest I've found so far aber es funktioniert nicht auf die gleiche Weise.
C:\vbackup.bat test e: c:\temp
@echo off
IF /I NOT "%2" == "c:" (
:echo %%2:~0,1% // I personally prefer this since it will only be used once
:: Test
SET var=%2
SET var2=%var:~0,1%
CALL :show "0,1"
echo.
echo Backing up entire %2 to %3\%1
echo.
pause
exit
)
:show
echo Test : var=%var% var2=%var2%
GOTO :eof
Ergebnis:
Test : var=e: var2=~0,1
Ich empfehle, ein Eingabeaufforderungsfenster zu öffnen und zuerst 'call /?' Auszuführen. Die Ausgabehilfe, die auf mehreren Fensterseiten angezeigt wird, erklärt, wie auf Batchdateiargumente ohne oder mit Modifikatoren wie '% ~ d2' referenziert wird, die so erweitert werden, dass sie nur den Buchstaben des zweiten Arguments übernehmen, was für Ihr Beispiel' E: 'ist. Klicken Sie anschließend im Eingabeaufforderungsfenster auf set/?, und lesen Sie das Kapitel über [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion.html), das Sie hier benötigen, wenn Sie innerhalb eines Befehls eine Umgebungsvariable definieren blockieren und auf den Wert dieser Umgebungsvariablen im selben Block zugreifen wollen. – Mofi
Sie benötigen eine normale Umgebungsvariable für die [Sub-String-Erweiterung] (http://ss64.com/nt/syntax-substring.html), sie kann nicht für Argumentverweise wie '% 2' verwendet werden. Wenn Sie eine Variable in einem einzelnen Codeblock ändern und lesen, benötigen Sie [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion.html). – aschipfl