ここでは、あなたの希望は、文字列の先頭から%でcd%を削除する場合に機能別の方法です。遅いですが、状況が許せばループ数を減らすことができます。
call :removeCommonAtStart outvar C:\Users\Public\Documents\ASUSAccess
:removeCommonAtStart
:: Description: loops through two strings and sets new variable representing unique data
:: Required parameters:
:: name - name of the variable to be returned
:: test - string to have common data removed from start
:: Optional parameters:
:: remove - string if not defined then use %cd% as string.
:: Required functions:
:: removelet
set name=%~1
set test=%~2
set remove=%~3
if not defined remove set remove=%cd%
set endmatch=
FOR /L %%l IN (0,1,150) DO if not defined notequal call :removelet
goto :eof
:removelet
:: Description: called by removeCommonAtStart to remove one letter from the start of two string variables
:: Required preset variables:
:: test
:: remove
:: name
set test=%test:~1%
set %name%=%test:~1%
set remove=%remove:~1%
if "%test:~0,1%" neq "%remove:~0,1%" set notequal=on&exit /b
goto :eof
ありがとうございます、それは完璧に動作するようです!私は前にその構文を見たことがない、あなたは説明やリンクを提供できますか? –
私はそれがうまく働いているので、私はまた、私はなぜかわからないと言っても大嫌いです。 –
タイプ: 'SET /?'と "環境変数置換が次のように拡張されました:%path:str1 = str2%"の下の説明を探してください: "遅れた環境変数の拡張により..." – Aacini