2013-10-08 124 views
2

我想進入Windows批處理文件處理,但我沒有在這方面的經驗。如果你能指出我的總體方向,將不勝感激。批處理的基礎知識:我應該從哪裏開始?

其他潛在的問題:

  • 都與批處理避免哪些風險?
  • 批處理文件的基本結構是什麼?
  • 是否有批處理文件的基本類型的示例,我可以在哪裏執行操作?
  • 什麼是批處理命令的一些基本類型?
+0

我在業餘時間做了5分鐘的教程,繼承人的鏈接:http://www.instructables.com/id/Build-a-Batch-Calculator-Advanced-Calculator-v08/ – Monacraft

+0

將檢查出來! –

+0

不知道爲什麼這會被視爲'脫離主題'。所有的評論都非常有用。這是一個協作和小組學習的論壇。 –

回答

3

Bach是一種非常有條不紊,有序的編程語言,它大量運行在您很可能熟悉的Windows內部CMD或runline命令上。從我個人的經驗中主要使用批處理是使用腳本來自動化每次發生事件時需要運行的普通任務,例如在用戶啓動時。

我敢打賭,你現在可以很容易地製作一個基本的腳本,只是購買學習a)每個bactch文件應該理想地具有/需要的b)通過認識到默認情況下批處理文件將從上到下讀取,之後執行一個命令前一個完成或失敗。

在回答您的具體問題

  • 的風險批量處理是不是真的存在,如果你的腳本正確的東西,並測試它的每一步。 - 我會說,任何人都可以輕鬆地看到你的代碼,但第三方工具將批轉換爲.exe文件沒有問題。
  • 我在這個答案的底部列出了一些示例代碼和一些解釋。
  • 再次看到我的答案底部的一些基本腳本,將在您的計算機上工作(提供它的Windows版本)。
  • 正如我上面提到的,您可以鍵入CMD窗口的任何命令都可以在批處理文件中使用,因此您可以在CMD窗口中使用command /?來檢查參數以及編寫命令的方式。例如,輸入CMD窗口ipconfig /?

基本批處理文件結構(另存爲test.bat的)

@echo off 
title Test Batch Script 
color a 
echo. 
ipconfig /all 
echo. 
echo Above is your IP information. 
pause>nul 
exit 

關閉@echo - 這將關閉命令提示符,直至再次開啓,如果沒有這個顯示的每一個動作,在上面的腳本中刪除該行或將其打開以查看效果。

標題 - 這是相當自我解釋,這個命令標題爲您選擇的CMD窗口。

color xx - 顏色xx更改背景和文本的顏色,第一個值是文本,第二個是窗口背景。 - 使用color /?在CMD窗口中找到所有可能的組合,選擇一個自己,例如color 1f

回聲。 - 這會在文件本身中輸入一個換行符,我主要用它來在文本之間放置文本或添加幾行命令,以便在命令運行後可以清楚地看到文本。

echo - 這將打印您想要說的文本行,例如echo hello將在窗口中顯示文本hello。

pause> nul - 這會暫停批處理腳本前進到系列中的下一個命令。 - 但只要使用命令pause將顯示文本「按任意鍵繼續...」使用pause>nul將刪除此消息。不重要但個人喜好。

exit退出程序當然會關閉你的程序,但是當批處理腳本在沒有更多命令運行的情況下關閉時不需要用戶輸入。

我覺得我已經給了你一個基本的通用批處理文件,它使用幾乎每次創建批處理文件時使用的所有最常用的命令。

其他答案列出了大量的資源,你可以用它來了解更多。 - 批量是一種非常容易學習的語言,但可能會變得棘手,具體取決於您需要多少用戶輸入或您希望如何實現自動化。

抓住我的例子,用不同/多個命令替換ipconfig /all,以在腳本中練習使用它們。

+0

SamN:組織的很好。不勝感激! –

1

關於風險inolvd與批處理編程,可能發生的最糟糕的是,一些文件在您的計算機上工作時,你的批處理腳本可能會發生故障,導致文件被刪除或者毀或。這就是爲什麼,建議在測試batc腳本之前備份所有文件。

批處理文件的基本結構經常變化。當你開始時你將主要依靠goto循環結構。你的腳本將從一系列命令開始(通常是第一個命令是@echo off),然後使腳本goto不同於你的程序的不同部分。

稍後您將依靠for循環和批處理調用。

要找到一些體面的批量應用程序,我建議你看看網上,因爲有一些可以包含不少的景點。

對於基本的教程,我建議你開始做簡單的批處理應用程序來做非常基本的事情,如計數。

希望這對蒙娜有所幫助。

P.S.下面是一些我最近上傳了一些關於instructables我的老一批的應用程序,這裏是鏈接:

+0

真的,所以它不會對意外運行格式造成損害(在此處插入盤符):當你不是故意的? – nephi12

1

去的基本命令http://www.dostips.com/
列表:
echo hello world ::將向屏幕寫下你好世界
echo%time% ::將可變時間的值寫入屏幕
cd dir ::將進入名爲dir的目錄
類型file.txt ::將打印文件的內容到屏幕
dir :: will將當前目錄的內容回顯到屏幕
cd ..::將轉到父目錄
help ::將顯示命令列表
set ::將顯示所有當前變量
如果「%var%」EQU「hello」(echo is):: will echo is if var var將設置爲hello
set var = hello :: will將var設置爲hello
set/p var =您將如何獲取用戶的輸入信息:var
for/l %%我在(1,1,5)做回聲%% i ::將在屏幕上回顯1到5
ping host.com ::將檢查您是否可以連接到host.con並顯示一些結果。
複製a.txt dir \ dir2 \ b.txt ::將a.txt複製到第二個參數。
移動a.txt .. \ a.txt ::將a.txt移動到父目錄。
ren a.txt b.pdf ::將a.txt重命名爲b.pdf
命令/? ::將一個命令顯示幫助

這裏是我做了一些示例文件:(空行問題)
文件1:
SETLOCAL enabledelayedexpansion
集NLM =^



集NL = (a.txt)do a =!a !! nl!%% i/^「delims =」%%

回聲%A%


file2的:(每一個用於爲一行)

@迴響& SETLOCAL enabledelayedexpansion
如果 '%1' == ''(回聲缺少參數&暫停> NUL &出口/ b)
爲/升%% i的(%1,-1,0)做在(%% I,1,%1)不設置%% /升%%ĴI =!%%一世! (0,1,%1)do(for/l %% j in(0,1,%% i)do set nums =!nums!%% j)& echo!%%我!! NUMS! &組NUMS =
爲/升%% i的(%1,-1,0)做(在/升%%Ĵ(0,1,%%ⅰ)做一套NUMS =!NUMS!%%Ĵ )& echo!%% i !! nums! &組NUMS =

file3的:
SETLOCAL enabledelayedexpansion
FOR/F 「delims =」 %% i的(A.TXT)並設置一個= %%我&設定= A:! 「」=! &回波一個>> new.txt

file4將:!(爲是一行)

@迴響
爲/ d %% i的(*)FOR/F %%的j執行( 「%% i」)do(dir「%% i」/ b | for/f %% k in('find「%% j」/ v')do @dir「%% k」/ b/s | find 「Thumbs.db」 這個/ v)的




給我發電子郵件,如果您有任何疑問。我比任何其他語言都更瞭解批評並喜歡它。我的電子郵件是:[email protected]

玩得開心!;)

相關問題