iT邦幫忙

0

bat批次執行問題?

bat

寫了一隻自動執行備份bat
例如aws s3 cp s3://abc "abc"
aws s3 cp s3://def "def"

但是我在cmd內執行這隻bat,會在跑完第一行就結束
後面的都不會去執行

我複製所有的指令,直接貼到cmd去就會一行一行執行下去
代表指令是沒問題的

那我要怎麽寫bat才會順序執行

Homura iT邦研究生 2 級 ‧ 2018-06-15 11:06:15 檢舉
aws指的是aws-shell??
hsiang11 iT邦研究生 4 級 ‧ 2018-06-15 18:23:51 檢舉
一直遇上
找不到副檔名 .py 的檔案關聯
這有解嗎?
0
richardsuma
iT邦大師 3 級 ‧ 2018-06-15 17:05:29
最佳解答

試試
start /b aws s3 cp s3://abc "abc"
start /b aws s3 cp s3://def "def"

hsiang11 iT邦研究生 4 級 ‧ 2018-06-15 17:32:15 檢舉

start/b 真的可以解決 可以解說這參數嗎?

help start
開始另一個視窗來執行指定的程式或命令。

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE ] [/AFFINITY ] [/WAIT] [/B]
[command/program] [parameters]

"title"     要在視窗標題列顯示的標題。
path        開始目錄。
B           啟動應用程式但不建立新視窗。應用程式會略過 ^C 處理。除非應用
            程式啟用 ^C 處理,否則 ^Break 是唯一可以中斷應用程式的方法。
I           新環境將會是傳遞給 cmd.exe 的原始環境,而不是目前的環境。
MIN         啟動時讓視窗最小化。
MAX         啟動時讓視窗最大化。
SEPARATE    在不同的記憶體空間啟動 16 位元 Windows 程式。
SHARED      在共用的記憶體空間啟動 16 位元 Windows 程式。
LOW         在 IDLE 優先順序類別中啟動應用程式。
NORMAL      在 NORMAL 優先順序類別中啟動應用程式。
HIGH        在 HIGH 優先順序類別中啟動應用程式。
REALTIME    在 REALTIME 優先順序類別中啟動應用程式。
ABOVENORMAL 在 ABOVENORMAL 優先順序類別中啟動應用程式。
BELOWNORMAL 在 BELOWNORMAL 優先順序類別中啟動應用程式。
NODE        以十進位整數指定慣用的非統一記憶體架構 (NUMA) 節點。
AFFINITY    以十六進位數字指定處理器親和性遮罩。會限制處理程序在這些
            處理器上執行。

            當合併使用 /AFFINITY 及 /NODE 時,親和性遮罩會以不同的方式
            解譯。指定親和性遮罩就如 NUMA 節點的處理器遮罩向右位移,從
            位元零的位置開始。會限制處理程序在指定的親和性遮罩及 NUMA
            節點共用的這些處理器上執行。如果沒有共用的處理器,會限制
            處理程序在指定的 NUMA 節點上執行。
WAIT        啟動應用程式並等候它終止。
command/program
            如果這是內部 cmd 命令或批次檔,命令處理程式會使用 /K 參數
            執行 cmd.exe。這表示命令執行完成之後,視窗仍會維持開啟。

            如果這不是內部 cmd 命令或批次檔,它就是一個程式,它會以
            視窗化應用程式或主控台應用程式的方式執行。

parameters  這些是傳遞給 command/program 的參數。

注意: SEPARATE 與 SHARED 選項不支援 64 位元平台。

指定 /NODE 可讓您以利用 NUMA 系統上記憶體位置的方式建立處理程序。例如,若兩個
處理程序會透過共用記憶體頻繁地與彼此通訊,則您可以建立處理程序並讓它們共用相
同的慣用 NUMA 節點,以將記憶體延遲最小化。在可能的情況下,它們會從相同的 NUMA
節點配置記憶體,而且它們可以自由地在所指定節點外部的處理器上執行。

start /NODE 1 application1.exe
start /NODE 1 application2.exe

您可以進一步限制這兩個處理程序,讓它們在相同 NUMA 節點內的特定處理器上執行。
在下列範例中,application1 會在節點的兩個低位處理器上執行,而 application2
會在節點的下兩個處理器上執行。此範例假設指定的節點至少有四個邏輯處理器。請
注意,您可以將節點數目變更為該電腦的任何有效節點數目,而不需要變更親和性
遮罩。

start /NODE 1 /AFFINITY 0x3 application1.exe
start /NODE 1 /AFFINITY 0xc application2.exe

如果您啟用擴充命令,經由命令列或 START 命令的外部命令執行有以下改變:

可以經由打入檔案名稱的命令來利用檔名連結以啟動非執行檔。(例如 WORD.DOC
會執行和 .DOC 副檔名連結的程式)。請參看 ASSOC 及 FTYPE 命令來了解
如何在指令檔案中建立這些檔案連結。

當執行 32 位元的圖形介面應用程式時,CMD.EXE 並不會等應用程式停止才回到
命令提示。但是如果從指令檔中執行時,則不會有這樣的行為。

當執行一個命令列時,其中第一個字串項是字串 "CMD " 且沒有副檔名或路徑指
示,則 "CMD" 會被 COMSPEC 環境變數的值所取代。這會避免由目前目錄中
選擇 CMD.EXE

當執行一個命令列時,其中第一個字串項不包含副檔名時,則 CMD.EXE 使用
PATHEXT 環境變數的值來決定尋找哪個副檔名及用什麼順序來尋找。PATHEXT
變數的預設值為:

    .COM;.EXE;.BAT;.CMD

請注意這個語法和 PATH 變數相同,且用分號來隔開不同的項目。

當尋找執行檔時,若是任何副檔名都不符合,則會試著尋找是否有符合的目錄名稱。
如果有的話,START 命令會在那個路徑執行檔案管理員。若是從命令列執行,這就相
當於執行 CD /D 到那個路徑。

0
純真的人
iT邦高手 3 級 ‧ 2018-06-15 11:04:24

參考我bat多行寫法@@

@echo off
set ToDay=%date:~0,4%-%date:~5,2%-%date:~8,2%
del "D:\MSSQL備份\資料庫-%ToDay%.bak"
osql -U 帳號 -P 密碼 -S SQl伺服器IP -n -Q "BACKUP DATABASE 資料庫 TO DISK='D:\MSSQL備份\資料庫-%ToDay%.bak'"
@echo on
0
msnman
iT邦研究生 3 級 ‧ 2018-06-15 14:52:49

在批處理 file: 中包含以下行

set AWS_ACCESS_KEY_ID=your_access_key_id

set AWS_SECRET_ACCESS_KEY=your_secret_access_key

AWS文檔

hsiang11 iT邦研究生 4 級 ‧ 2018-06-15 16:26:56 檢舉

加上ID'Key還是會在第一行結束後直接被關閉

我要發表回答

立即登入回答