基于这个答案,我试图将%%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
现在varb
和varb
被保存并回显,但子串现在不起作用。
我试着阅读更多关于%%
variables( 链接 )的细节,但是这也没有帮助我。
任何build议/例子请?
你的第二个脚本是完美的。 我能看到的唯一错误就是在这一行: 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. )