NO IMAGE

windows bat

1. delims

用在for命令的引數f語句中,“for /f”用於解析字串。

比如有檔案”musci list.txt”:
序號、歌手名-歌曲名.字尾名
1、饒天亮-玫瑰愛人.wma
2、高一首-我不願錯過.mp3
3、黃凱芹-傷感的戀人.MP3
4、黃燦-黃玫瑰.lrc
5、黎姿-如此這般的愛情故事.mp3

code1: print all content

for /f %%i in (music list.txt) do echo %%i

code2: print fileName:

for %%i in (musci list.txt) do echo %%i

==> so, /f is used to parse fileName.

http://www.jb51.net/article/17927.htm中,作者寫的很形象生動,把delims表示為切蛋糕的好工具。

程式碼2:預設提取第一列
for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i
pause

執行結果:
序號
1
2
3
4
5

2、 %cd% and %~dp0

cd is a DOS command, for example, if the .bat file in dir of D:\test.bat;
if using %cd% in E:,then it print E:
if using %~dp0 in E: then it print D:;
while if executed in D,it both print D:
所以,就是說,cd是當前執行的目錄,而~dp0表示bat檔案所在的目錄

3、 example:

  • 想要遍歷某個資料夾,獲取到資料夾下面的檔名稱,然後開始執行exe,傳檔名稱給可執行程式;
    set path=C:\Users\demo\content\
    for /f “delims=” %%a in (‘dir /b/a-d/oN %path%’) do (
    start deep_image_analogy.exe ../models/ ../demo/%%a ../demo/style.png ../demo/%%a/ 0 0.5 2 0)

    pause

  • 獲取某個目錄下面檔案的名稱
    @echo off

    for /f “delims=” %%a in (‘dir /b/a-d/oN .‘) do echo %%a >>list.txt

    pause

    其中@echo off 表示不需要輸出內容; pause表示不要視窗一閃而過;

  • dir 可以檢視dos下面dir的具體用法