第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

set語句似乎不適用于我的批處理文件

set語句似乎不適用于我的批處理文件

set語句似乎不適用于我的批處理文件但我真的不明白這個解釋。這是我的劇本......for /R /d  %%f in (\Product\Database\SQL\Project\Model\Scripts\*) DO (REM echo %%fSET !LOAD_FILE_FILTER= %%f\*.sqlecho file: %!LOAD_FILE_FILTER%CALL %!BATCH_FILE% -u %!USER_NAME% -p %!PASSWORD% -s %!SERVER_NAME% -d %!DATABASE_NAME% -f %!LOAD_FILE_FILTER% -o %!LOG_FILE%IF %!EchoErrors%==1 (     ECHO [     TYPE %!LOG_FILE%     ECHO ]))echo始終打印文件:* .sql,我傳遞此var的腳本總是抱怨LOAD_FILE_FILTER為空。我嘗試setlocal EnableDelayedExpansion按照文章中的建議添加,但它沒有解決問題。將echo file: %!LOAD_FILE_FILTER%始終打印在我運(yùn)行的目錄中的最后一個子目錄。將echo %%f始終打印正確的值。什么是'!' 變量背后為我做什么?另外,有人可以向我解釋兩者之間的區(qū)別SET!VAR和SET VAR%VAR &&!VAR&!VAR!%% VAR
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊

我們將從一個簡單的案例開始

set "var="set "var=test" echo %var%

讀取代碼后,它會刪除變量的內(nèi)容,為其賦予一個新值并回顯它。

讓我們稍微改變最后兩個命令

set "var="set "var=test" & echo %var%

“相同”代碼,但在這種情況下,輸出到控制臺不會顯示變量中的值。

為什么?在批處理文件中,將解析然后執(zhí)行要執(zhí)行的行。在解析階段,每個變量讀取操作(在此處檢索變量的值)將替換為在解析時存儲在變量內(nèi)的值。完成此操作后,將執(zhí)行生成的命令。因此,在解析第二行的前一個示例中,它將轉(zhuǎn)換為

set "var=test" & echo

現(xiàn)在,線路上沒有讀取操作,沒有回顯值,因?yàn)楫?dāng)線路被加入時,變量沒有保存任何值(它將在執(zhí)行線路時分配),因此讀取操作已被替換為空。此時,執(zhí)行代碼并且感知到的行為是set命令失敗,因?yàn)槲覀儧]有得到回顯到控制臺的“明顯”值。

在塊中也可以找到此行為。塊是括在括號中的一組行(通常forif構(gòu)造),并由解析器處理,就像塊中的所有行只有一行具有連接命令一樣。重寫完整塊,刪除所有變量讀取操作并用變量內(nèi)部的值替換,然后執(zhí)行內(nèi)部沒有變量引用的完整塊。

在執(zhí)行時,對塊內(nèi)的變量沒有讀操作,只有其初始值,因此,在同一塊內(nèi)不能檢索分配給塊內(nèi)變量的任何值,因?yàn)闆]有任何讀操作。

所以,在這段代碼中

set "test=before"if defined test (
    set "test=after"
    echo %test%)

set執(zhí)行第一個之后,if將解析塊(命令和括號中包含的所有代碼)并將其轉(zhuǎn)換為

if defined test (
    set "test=after"
    echo before)

顯示“錯誤”的價值。

處理它的常用方法是使用延遲擴(kuò)展。它可以讓你改變,在需要的地方,語法從讀可變%var%進(jìn)!var!,指示該讀操作不能在分析時被刪除,但推遲到執(zhí)行該命令的語法分析器。

setlocal enabledelayedexpansionset "var="set "var=test" & echo !var!

現(xiàn)在的第三行在解析時轉(zhuǎn)換為

set "var=test" & echo !var!

是的,不刪除變量引用。echo當(dāng)變量的值已經(jīng)改變時,讀操作被延遲,直到執(zhí)行命令。

所以

%var% 是一個變量引用,將在分析時替換

!var! 是一個將在執(zhí)行時替換的變量引用

%xx單個字符通常是一個for可替換的參數(shù),將容納被interated當(dāng)前元素的變量。就其本身而言,將在執(zhí)行時擴(kuò)展。在命令行中使用帶有單個百分號的語法。在批處理文件內(nèi)部,需要轉(zhuǎn)義百分號,并且引用可替換參數(shù)的語法是%%x


查看完整回答
反對 回復(fù) 2019-08-23
?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個贊

這是一個很好的信息,但我仍然在這里旋轉(zhuǎn)我的車輪。根據(jù)這個解釋,我希望這可以工作,setlocal EnableDelayedExpansion for /R /d %%f in (Product\Database\SQL\ICWProject\Model\Scripts\*) DO ( SET LOAD_FILE_FILTER=%%f\*.sql echo file: !LOAD_FILE_FILTER! server: %!SERVER_NAME% CALL %!BATCH_FILE% -s %!SERVER_NAME% -d %!DATABASE_NAME% -f !LOAD_FILE_FILTER! -u %!USER_NAME% -p %!PASSWORD% -o %!LOG_FILE% )!LOAD_FILE_FILTER!總是評估我第一次通過循環(huán)后的期望

查看完整回答
反對 回復(fù) 2019-08-23
  • 2 回答
  • 0 關(guān)注
  • 616 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號