亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在/ F的循環內設置變量

如何在/ F的循環內設置變量

慕婉清6462132 2019-11-02 11:02:07
我寫了這段代碼dir /B /S %RepToRead% > %FileName%for /F "tokens=*" %%a in ('type %FileName%') do (    set z=%%a    echo %z%    echo %%a)echo %%a工作正常,但echo %z%返回“禁用回聲”。我需要設置%z%,因為我想像 %z:~7%有任何想法嗎?
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

在for循環和括號范圍內,有兩種方法可以設置和使用變量。


setlocal enabledelayedexpansion看到setlocal /?求助。這僅適用于XP / 2000或更高版本的Windows。然后使用!variable!而不是%variable%循環內...


使用批處理goto標簽創建批處理功能:Label。


例:


for /F "tokens=*" %%a in ('type %FileName%') do call :Foo %%a

goto End


:Foo

set z=%1

echo %z%

echo %1

goto :eof


:End

批處理功能是非常有用的機制。


查看完整回答
反對 回復 2019-11-02
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

我為此奮斗了很多小時。這是我注冊命令行變量的循環。示例:Register.bat / param1:value1 / param2:value2


它的作用是循環所有命令行參數,并使用正確的名稱將變量設置為值。


之后,您可以只使用set value =!param1 !!設置value2 =!param2!


無論給定參數的順序如何。(所謂的命名參數)。請注意!<> !,而不是%<>%。


SETLOCAL ENABLEDELAYEDEXPANSION


FOR %%P IN (%*) DO (

    call :processParam %%P

)


goto:End


:processParam [%1 - param]


    @echo "processparam : %1"

    FOR /F "tokens=1,2 delims=:" %%G IN ("%1") DO (

        @echo a,b %%G %%H

        set nameWithSlash=%%G

        set name=!nameWithSlash:~1!

        @echo n=!name!

        set value=%%H

        set !name!=!value!

    )

    goto :eof


:End    


查看完整回答
反對 回復 2019-11-02
  • 3 回答
  • 0 關注
  • 663 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號