青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

luqingfei@C++

為中華之崛起而崛起!
兼聽則明,偏聽則暗。

[轉]Windows下set命令詳解

        最近想要在Windows下批量備份文件成不同的日期后綴,需要一個時間變量,于是翻閱了很多資料,發現可以用set命令很方便得在bat中實現。于是順便也研究了一下set命令的詳細使用方法。首先來看一下set命令的官方help:
 
C:\Documents and Settings\wangxiaoqi>set /?

顯示、設置或刪除 cmd.exe 環境變量。
 
SET [variable=[string]]
 
  variable  指定環境變量名。
  string    指定要指派給變量的一系列字符串。
 
要顯示當前環境變量,鍵入不帶參數的 SET。
 
如果命令擴展名被啟用,SET 會如下改變:
 
可僅用一個變量激活 SET 命令,等號或值不顯示所有前綴匹配SET 命令已使用的名稱的所有變量的值。例如:
 
    SET P
 
會顯示所有以字母 P 打頭的變量
 
如果在當前環境中找不到該變量名稱,SET 命令將把 ERRORLEVEL設置成 1。
 
SET 命令不允許變量名含有等號。
 
在 SET 命令中添加了兩個新命令行開關:
 
    SET /A expression
    SET /P variable=[promptString]
 
/A 命令行開關指定等號右邊的字符串為被評估的數字表達式。該表達式評估器很簡單并以遞減的優先權順序支持下列操作:
 
    ()                  - 分組
    ! ~ -               - 一元運算符
    * / %               - 算數運算符
    + -                 - 算數運算符
    << >>               - 邏輯移位
                       - 按位“與”
    ^                   - 按位“異”
    |                   - 按位“或”
    = *= /= %= += -=    - 賦值
      &= ^= |= <<= >>=
    ,                   - 表達式分隔符
 
如果您使用任何邏輯或取余操作符, 您需要將表達式字符串用引號擴起來。在表達式中的任何非數字字符串鍵作為環境變量名稱,這些環境變量名稱的值已在使用前轉換成數字。如果指定了一個環境變量名稱,但未在當前環境中定義,那么值將被定為零。這使您可以使用環境變量值做計算而不用鍵入那些 % 符號來得到它們的值。如果 SET /A 在命令腳本外的命令行執行的,那么它顯示該表達式的最后值。該分配的操作符在分配的操作符左邊需要一個環境變量名稱。除十六進制有 0x 前綴, 八進制有 0 前綴的,數字值為十進位數字。因此, 0x12 與 18 和 022相同。請注意八進制公式可能很容易搞混: 08 和 09 是無效的數字,因為 8 和 9 不是有效的八進制位數。
 
/P 命令行開關允許將變量數值設成用戶輸入的一行輸入。讀取輸入行之前,顯示指定的 promptString。promptString 可以是空的。
 
環境變量替換已如下增強:
 
    %PATH:str1=str2%
 
會擴展 PATH 環境變量,用 "str2" 代替擴展結果中的每個 "str1"。要有效地從擴展結果中刪除所有的 "str1","str2" 可以是空的。"str1" 可以以星號打頭;在這種情況下,"str1" 會從擴展結果的開始到 str1 剩余部分第一次出現的地方,都一直保持相配。
 
也可以為擴展名指定子字符串。
 
    %PATH:~10,5%
 
會擴展 PATH 環境變量,然后只使用在擴展結果中從第 11 個(偏移量 10)字符開始的五個字符。如果沒有指定長度,則采用默認值,即變量數值的余數。如果兩個數字(偏移量和長度)都是負數,使用的數字則是環境變量數值長度加上指定的偏移量或長度。
 
    %PATH:~-10%
 
會提取 PATH 變量的最后十個字符。
 
    %PATH:~0,-2%
 
會提取 PATH 變量的所有字符,除了最后兩個。
 
終于添加了延遲環境變量擴充的支持。該支持總是按默認值被停用,但也可以通過 CMD.EXE 的 /V 命令行開關而被啟用/停用。
請參閱 CMD /?
 
考慮到讀取一行文本時所遇到的目前擴充的限制時,延遲環境變量擴充是很有用的,而不是執行的時候。以下例子說明直接變量擴充的問題:
 
    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "%VAR%" == "after" @echo If you see this, it worked
    )
 
不會顯示消息,因為在讀到第一個 IF 語句時,BOTH IF 語句中的 %VAR% 會被代替;原因是: 它包含 IF 的文體,IF 是一個復合語句。所以,復合語句中的 IF 實際上是在比較 "before" 和"after",這兩者永遠不會相等。同樣,以下這個例子也不會達到預期效果:
 
    set LIST=
    for %i in (*) do set LIST=%LIST% %i
    echo %LIST%
 
原因是,它不會在目前的目錄中建立一個文件列表,而只是將LIST 變量設成找到的最后一個文件。這也是因為 %LIST% 在FOR 語句被讀取時,只被擴充了一次;而且,那時的 LIST 變量是空的。因此,我們真正執行的 FOR 循環是:
 
    for %i in (*) do set LIST= %i
 
這個循環繼續將 LIST 設成找到的最后一個文件。
 
延遲環境變量擴充允許您使用一個不同的字符(驚嘆號)在執行時間擴充環境變量。如果延遲的變量擴充被啟用,可以將上面例子寫成以下所示,以達到預期效果:
 
    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "!VAR!" == "after" @echo If you see this, it worked
    )
 
    set LIST=
    for %i in (*) do set LIST=!LIST! %i
    echo %LIST%
 
如果命令擴展名被啟用,有幾個動態環境變量可以被擴展,但不會出現在 SET 顯示的變量列表中。每次變量數值被擴展時,這些變量數值都會被動態計算。如果用戶用這些名稱中任何一個定義變量,那個定義會替代下面描述的動態定義:
 
%CD%            - 擴展到當前目錄字符串。
%DATE%          - 用跟 DATE 命令同樣的格式擴展到當前日期。
%TIME%          - 用跟 TIME 命令同樣的格式擴展到當前時間。
%RANDOM%        - 擴展到 0 和 32767 之間的任意十進制數字。
%ERRORLEVEL%    - 擴展到當前 ERRORLEVEL 數值。
%CMDEXTVERSION% - 擴展到當前命令處理器擴展名版本號。
%CMDCMDLINE%    - 擴展到調用命令處理器的原始命令行。
 
 
    這次用到的屬性可以參見紅色標注段落,可以做一個實驗來加深理解:
 
C:\Documents and Settings\wangxiaoqi>set a=1234567890
 
C:\Documents and Settings\wangxiaoqi>echo %a%
1234567890
 
C:\Documents and Settings\wangxiaoqi>echo %a:~3,3%
456
 
C:\Documents and Settings\wangxiaoqi>echo %a:~3%
4567890
 
C:\Documents and Settings\wangxiaoqi>echo %a:~-3%
890
 
C:\Documents and Settings\wangxiaoqi>echo %a:~-3,-2%
8
 
C:\Documents and Settings\wangxiaoqi>echo %a:~-3,-4%
ECHO 處于打開狀態。
 
C:\Documents and Settings\wangxiaoqi>echo %a:~,-4%
123456
 
C:\Documents and Settings\wangxiaoqi>echo %a:~4,%
ECHO 處于打開狀態。

    總得來說,windows下面這個特性的應用跟oracle下面的substr函數還是有區別的,主要是第二位的負數處理存在差異。Oracle的第二位負數表示從右往左數,而Windows下的set命令第二位負數表示從右邊開始截斷多少位,只有單獨使用的時候才表示從左往右數。
 
    這次需要用到的是日期變量,所以可以很容易得通過set命令來實現:
 
C:\Documents and Settings\wangxiaoqi>echo %DATE%
2009-04-30 星期四
 
C:\Documents and Settings\wangxiaoqi>set b=%DATE:~0,10%
 
C:\Documents and Settings\wangxiaoqi>echo %b%
2009-04-30
 
 
    需要注意的是:不同的Windows版本,DATE的默認格式是不同的,有的星期放在左邊,有的星期放在右邊,所以最好先echo出來看一看再調整參數,當然在左邊的就更方便了,直接 %DATE:~-10% 就可以了。有空的時候再研究一下別的特性。

posted on 2010-06-27 13:09 luqingfei 閱讀(588) 評論(0)  編輯 收藏 引用 所屬分類: Windows

導航

<2010年6月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統計

留言簿(6)

隨筆分類(109)

隨筆檔案(105)

Blogers

Game

Life

NodeJs

Python

Useful Webs

大牛

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美午夜精品久久久久久孕妇| 久久亚洲精品欧美| 亚洲免费在线观看视频| 欧美高清不卡在线| 樱桃成人精品视频在线播放| 午夜视频久久久| 99综合视频| 欧美日韩精品久久| 亚洲精品在线二区| 亚洲黄色av一区| 久热精品视频| 伊人色综合久久天天| 久久综合九色99| 久久久久**毛片大全| 激情久久一区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久久久久国产精品mv| 国产亚洲视频在线| 久久婷婷国产麻豆91天堂| 欧美在线综合视频| 永久域名在线精品| 欧美激情精品久久久六区热门| 美女黄色成人网| 亚洲卡通欧美制服中文| 亚洲精品黄色| 国产精品扒开腿做爽爽爽视频 | 欧美中文字幕在线| 久久aⅴ国产紧身牛仔裤| 黑人巨大精品欧美一区二区小视频| 欧美亚洲一区二区在线| 欧美一区二区日韩一区二区| 激情六月婷婷久久| 亚洲第一在线| 欧美天堂亚洲电影院在线观看| 午夜精品久久久久久久99樱桃| 亚洲男人第一av网站| 极品尤物av久久免费看| 亚洲高清视频在线观看| 欧美伦理91i| 欧美在线观看www| 久久这里有精品视频 | 亚洲一区尤物| 黄色亚洲在线| 最新中文字幕亚洲| 国产情人节一区| 精品成人一区| 亚洲国产高清高潮精品美女| 欧美日韩在线亚洲一区蜜芽| 欧美在线观看视频在线| 免费成人黄色av| 亚洲欧美在线aaa| 美女主播一区| 亚洲欧美综合国产精品一区| 久久久噜噜噜久久中文字幕色伊伊| 一区二区免费在线播放| 久久精品国产99国产精品| 一区二区三区日韩精品| 久久精品91| 午夜国产精品视频| 欧美大片免费| 噜噜噜91成人网| 国产精品三上| 日韩午夜三级在线| 亚洲人体一区| 久久九九精品| 久久国产精品久久w女人spa| 欧美精品电影在线| 免费在线亚洲| 国产自产2019最新不卡| 亚洲视频欧美视频| 夜夜嗨网站十八久久| 久久综合久久综合这里只有精品| 午夜精品999| 欧美日韩亚洲免费| 亚洲精品久久久久久久久久久久久 | 另类专区欧美制服同性| 午夜视黄欧洲亚洲| 欧美午夜精品久久久久久人妖| 亚洲国产mv| 亚洲大片精品永久免费| 久久精品一本久久99精品| 欧美专区一区二区三区| 国产精品久久久久久久app| 亚洲美洲欧洲综合国产一区| 亚洲精品中文字| 蜜臀av在线播放一区二区三区| 久久躁日日躁aaaaxxxx| 国内成+人亚洲| 久久丁香综合五月国产三级网站| 午夜精品婷婷| 国产乱码精品1区2区3区| 一本在线高清不卡dvd| 一区二区欧美精品| 欧美午夜精品久久久久久人妖| 一区电影在线观看| 亚洲欧美综合网| 国产九色精品成人porny| 亚洲一区在线直播| 久久成人一区| 黄色精品网站| 欧美电影打屁股sp| 亚洲精品老司机| 亚洲性人人天天夜夜摸| 国产精品盗摄一区二区三区| 亚洲小说春色综合另类电影| 欧美一级大片在线免费观看| 国产精品资源在线观看| 久久99伊人| 亚洲国产91| 亚洲欧美日韩成人| 韩日精品在线| 夜夜夜精品看看| 午夜精品福利一区二区蜜股av| 亚洲人成在线播放| 欧美日韩国产亚洲一区| 亚洲国产网站| 亚洲综合精品四区| 国产午夜一区二区三区| 久久久另类综合| 亚洲第一偷拍| 性欧美在线看片a免费观看| 国产丝袜美腿一区二区三区| 久久精品国产免费看久久精品| 亚洲二区三区四区| 性欧美xxxx大乳国产app| 精品成人在线视频| 欧美日韩精品一区视频 | 欧美激情一区| 午夜精品三级视频福利| 亚洲国产成人精品久久久国产成人一区| 一本一本久久a久久精品综合麻豆| 国产精品视频第一区| 久久一区二区精品| 亚洲一区二区三区精品在线观看| 另类专区欧美制服同性| 一区二区高清视频在线观看| 国产午夜亚洲精品理论片色戒| 欧美黄色影院| 久久久久女教师免费一区| 一区二区三区欧美| 欧美福利在线| 久久国产精品第一页| 一区二区av在线| 在线观看亚洲精品视频| 国产精品美女久久久久久久| 免费欧美日韩| 久久精品视频在线看| 亚洲视频一区二区| 亚洲欧洲精品一区二区三区波多野1战4| 久久本道综合色狠狠五月| 一本一本a久久| 亚洲区一区二区三区| 国产一区高清视频| 国产精品一区一区| 欧美色图麻豆| 欧美日韩久久精品| 欧美国产综合视频| 久久久亚洲人| 久久久久国产精品人| 欧美有码在线观看视频| 亚洲一区黄色| 亚洲视频免费| 亚洲网站视频| 亚洲图片欧洲图片av| 99视频一区二区| 亚洲最新视频在线| 99av国产精品欲麻豆| 99精品视频免费| 一本久道久久综合狠狠爱| 最近中文字幕日韩精品 | 欧美在线日韩精品| 亚洲欧美日韩久久精品| 亚洲图片欧美午夜| 中文av字幕一区| 这里是久久伊人| 一区二区三区四区五区在线| 夜夜夜精品看看| 亚洲一级一区| 黄色在线一区| 狠狠久久亚洲欧美专区| 国语自产精品视频在线看抢先版结局| 国产欧美日韩高清| 国产视频观看一区| 黄色日韩网站视频| 亚洲国产精品高清久久久| 亚洲国产综合在线看不卡| 亚洲欧洲日本在线| 一区二区日韩| 亚洲综合色激情五月| 欧美有码在线视频| 久久久一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美成人精品h版在线观看| 欧美高清视频在线| 亚洲精品无人区| 亚洲综合导航| 久久久久国内| 免费在线看一区| 国产精品国产福利国产秒拍| 国产日韩精品一区二区三区在线|