Dưới đây là một phương pháp làm việc nếu muốn bạn để loại bỏ các% cd% so với khởi đầu của một chuỗi. Nó chậm nhưng bạn có thể hạ thấp số vòng lặp nếu bạn tình huống cho phép.
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
Cảm ơn, điều đó dường như hoạt động hoàn hảo! Tôi chưa bao giờ thấy cú pháp đó trước đây, bạn có thể vui lòng cung cấp giải thích hoặc liên kết không? –
Tôi cũng upvoting vì nó hoạt động, mặc dù tôi ghét phải nói, tôi không biết tại sao. –
Loại: 'SET /?' Và tìm giải thích trong "Thay thế biến môi trường đã được tăng cường như sau:% PATH: str1 = str2%" và cũng theo: "Mở rộng biến môi trường bị trễ cho phép bạn ..." – Aacini