發表文章

目前顯示的是 10月, 2012的文章

DOS批次檔中取得中華民國年份

圖片
開始覺得DOS的批次檔指令真是高深莫測了。 最近想完成個小需求就是要寫一個DOS Batch指令檔,去Linux主機上用FTP模式下載一些檔案下來。 這些檔案的檔名都是以日期編名的,如果是用西元年,那倒也還容易。可是這次的檔名卻是用中華民國的年份。@@ 好吧,西元年算到中華民國年份,充其量用個減法減去1911年就可以得到了。但在DOS的批次檔中要如何寫啊? 首先要取得西元年的日期 在Dos命令列視窗中輸入date /t可以取得目前的日期,但格式化後取得的結果如下,它會多一個星期幾的字串。 但我們並不想要這個星期幾的字串,而且也不想要"/"。所以可以用如下的指令來取得20121003的字串: @echo off REM 產生日期參數 @For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set date=%%a%%b%%c) @echo %date% pause 執行的結果如下: 上面DOS指令中的For的意思就是將date /t的結果,依delims(分割字元)來區隔,注意這裏設定的分割字元有兩種,一種是"/",另一種" ",是空格喔。接著它會取分割後的第一到第三個部份,這是tokens=1-3指定的。 並且所分割出來的部份是以%%a開始命名變數,所以這三個分割出來的變數名稱就是%%a、%%b及%%c。 分割完成後就執行do裏面指令的指令 set date=%%a%%b%%c。這樣就可以得到20121003的字串了。 計算民國年 有了西元年月日,接著就是要計算民國年了。前面我們得到的字串其內容為20121003,接著我們想要取得前面四碼。要如何取得前四碼呢?這又是個難題了。後來查了一下,正好看到有人提供一個方式: set tt=%date:~0,4% 原來SET指令還有這種模式可以用來取得字串的某一部份,真是沒想到。後來就查了一下 SET指令的說明 ,才知道真有這種方式。 不過取到了前四碼,那要如何進行數學運算呢?原來也是用SET就可以了: SET /A ChinaYear=%Year%-1 在SET指令中加上/A的參數就是表示