2017-07-06 124 views
0
從這個 answer我試圖挽救 %%a%%b值到變量基於

內,但它不工作:無法設置變量從%%值批處理腳本

@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打印正確的信息!這個想法是,我可以在之後操作該變量,例如提取子字符串。

在網上搜索後,我發現這個answer從中我嘗試了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 

varavarb現在被保存並適當地迴應,但現在子不工作..

我嘗試閱讀更多關於%%變量(link)的具體信息,但這對我也沒有幫助。

任何建議/例如please?

+1

向我們展示你的ENABLEDELAYEDEXPANSION嘗試。 – Anders

+0

@Anders我按照你的要求提供了另一個嘗試,同時還有一個小的修改,用於將變量保存爲應該的形式,但由於以下子字符串嘗試不起作用(即不返回任何內容),所以它們不能「正確」保存。 – Karim

回答

1

你的第二個腳本完美地工作。我可以發現的唯一錯誤是在這一行:set day=%vara:~0,2%。它應該是set day=!vara:~0,2!

enter image description here

@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. 
) 
+0

我使用'%'而不是'!'呼應''日期...... 謝謝您的回答。你能否也請提供一個簡短的解釋爲什麼'%%'需要'!'? – Karim

+1

看看這個:https://ss64.com/nt/delayedexpansion.html這應該解釋一切。 – MichaelS

相關問題