批处理脚本中不能从%%值设置variables

基于这个答案,我试图将%%a%%b值保存到variables,但它不起作用:

 @ECHO OFF SETLOCAL set "path_of_folder=C:\folderA\folderB" if exist "%path_of_folder%" ( echo Path exists. for /f "skip=5 tokens=1,2,4 delims= " %%a in ( 'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." ( set "dt=%%a" echo Created on: %%a, %%b set "vara=%%a" set "varb=%%b" echo %vara%, %varb% REM substring set day=%vara:~0,2% ) ) else ( echo Path does not exist. ) GOTO :EOF 

但是echo %vara%, %varb%是空的,即使前面的echo Created on: %%a, %%b打印正确的信息! 这个想法是,我可以后来操纵这个variables,例如提取子string。

在线search后,我发现这个答案 ,我尝试了setlocal ENABLEDELAYEDEXPANSION ,并用惊叹号的方法,但他们也失败了。

[更新包括我的其他尝试,并使用感叹号部分修复]

 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION set "path_of_folder=C:\folderA\folderB" if exist "%path_of_folder%" ( echo Path exists. for /f "skip=5 tokens=1,2,4 delims= " %%a in ( 'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." ( set "dt=%%a" echo Created on: %%a, %%b set vara=%%a set varb=%%b echo !vara!, !varb! REM substring set day=%vara:~0,2% ) ) else ( echo Path does not exist. ) GOTO :EOF 

现在varbvarb被保存并回显,但子串现在不起作用。

我试着阅读更多关于%%variables( 链接 )的细节,但是这也没有帮助我。

任何build议/例子请?

Solutions Collecting From Web of "批处理脚本中不能从%%值设置variables"

你的第二个脚本是完美的。 我能看到的唯一错误就是在这一行: set day=%vara:~0,2% 。 应该set day=!vara:~0,2!

在这里输入图像说明

 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION set "path_of_folder=C:\folderA\folderB" if exist "%path_of_folder%" ( echo Path exists. for /f "skip=5 tokens=1,2,4 delims= " %%a in ( 'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." ( set "dt=%%a" echo Created on: %%a, %%b set vara=%%a set varb=%%b echo !vara!, !varb! REM substring set day=!vara:~0,2! ) ) else ( echo Path does not exist. )