向DOS批處理檔案傳入任意個數的引數方法實現

2021-08-01 08:05:17 字數 4513 閱讀 4015

關於windows下的dos批處理我雖然使用的不多,但是有限的幾個熟悉的命令倒也使用的不少。在一些使用受到很多限制的windows電腦上,我時常會通過bat檔案實現其他指令碼語言或者程式提供給使用者的工具介面。

#!/usr/binpython

import sys

def touch(file_name):

fid =open(file_name,'w')

fid.close()

create_*** = false

for each_file in sys.argv:

if create_***:

touch(each_file)

else:

create_***= true

其中,create_***使用的目的是避開第乙個傳入引數。因為第乙個傳入引數是本身。

指令碼測試的過程:

e:\workspace\01_程式語言\03_python\demos>dir

驅動器 e 中的卷沒有標籤。

卷的序列號是 2013-5089

e:\workspace\01_程式語言\03_python\demos 的目錄

2017/05/18 23:52    .

2017/05/18 23:52    ..

2017/05/08 19:15               518 add_dir.py

2017/03/29 21:00    python_exp01

2017/03/29 21:02    python_exp02

2017/04/03 09:23    python_exp03

2017/05/18  23:47    python_exp04

2017/04/12 22:16    python_exp05

2017/05/07 18:53    python_exp06

2017/05/08 19:17    python_exp07

2017/05/08 19:52    python_exp08

2017/05/18 23:52               214 touch.py

2個檔案            732 位元組

10個目錄77,768,101,888 可用位元組

e:\workspace\01_程式語言\03_python\demos>python touch.py 1.c2.c 3.c

e:\workspace\01_程式語言\03_python\demos>dir

驅動器 e 中的卷沒有標籤。

卷的序列號是 2013-5089

e:\workspace\01_程式語言\03_python\demos 的目錄

2017/05/18 23:52    .

2017/05/18 23:52    ..

2017/05/18 23:52                 0 1.c

2017/05/18 23:52                 0 2.c

2017/05/18 23:52                 0 3.c

2017/05/08 19:15               518 add_dir.py

2017/03/29 21:00    python_exp01

2017/03/29 21:02    python_exp02

2017/04/03 09:23    python_exp03

2017/05/18 23:47    python_exp04

2017/04/12 22:16    python_exp05

2017/05/07 18:53    python_exp06

2017/05/08 19:17    python_exp07

2017/05/08 19:52    python_exp08

2017/05/18 23:52               214 touch.py

5個檔案            732 位元組

10個目錄77,768,101,888 可用位元組

通過上面的結果可以看出,使用指令碼可以實現新文字檔案的批量建立。但是每次都使用這個命令才進行這種操作還是有些麻煩,因為每次我們都需要增加乙個python字元的輸入。為了能夠實現隨時呼叫,寫乙個批處理檔案並將其放到windows可以尋找到的path目錄中。

先說一下初期我使用的批處理指令碼,最初的使用批處理檔案中只有一句:

@python dir/touch.py %1

其中,%1的含義是輸入的第乙個引數,而dir則是指令碼所在的實際目錄。這樣,可以做如下測試:

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:01    .

2017/05/19 00:01    ..

0個檔案              0 位元組

2個目錄78,496,571,392 可用位元組

c:\users\thinkpad\desktop\demo>touch 1.c

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:02    .

2017/05/19 00:02    ..

2017/05/19 00:02                 0 1.c

1個檔案              0 位元組

2個目錄78,496,571,392 可用位元組

c:\users\thinkpad\desktop\demo>touch 1.c 2.c

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:02    .

2017/05/19 00:02    ..

2017/05/19 00:02                 0 1.c

1個檔案              0 位元組

2個目錄78,496,571,392 可用位元組

c:\users\thinkpad\desktop\demo>touch 2.c 3.c

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:02    .

2017/05/19 00:02    ..

2017/05/19 00:02                 0 1.c

2017/05/19 00:02                 0 2.c

2個檔案              0 位元組

2個目錄78,496,571,392 可用位元組

通過這樣的方法實現乙個引數的傳入是十分簡單的,但是弊端是對於多餘乙個引數的傳入不成功。就是後面多加幾個引數也不是什麼好的解決方法。後來,經過自己嘗試發現,使用萬用字元的方式可以實現多個引數的準確傳入。修改批處理如下:

@python c:\python27\touch.py %*

再次測試:

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:04    .

2017/05/19 00:04    ..

0個檔案              0 位元組

2個目錄78,496,595,968 可用位元組

c:\users\thinkpad\desktop\demo>touch 1.c 2.c 3.c

c:\users\thinkpad\desktop\demo>dir

驅動器 c 中的卷沒有標籤。

卷的序列號是 28bd-e720

c:\users\thinkpad\desktop\demo 的目錄

2017/05/19 00:04    .

2017/05/19 00:04    ..

2017/05/19 00:04                 0 1.c

2017/05/19 00:04                 0 2.c

2017/05/19 00:04                 0 3.c

3個檔案              0 位元組

2個目錄78,496,595,968 可用位元組

從上面的結果可以看出,這次的功能實現就要實用多了。

DOS批處理檔案

dos下的可執行檔案有三種,分別是exe,com和bat。其中,exe和com檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非...

DOS批處理檔案

dos下的可執行檔案有三種,分別是exe,com和bat。其中,exe和com檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非...

DOS 批處理檔案

dos 下的可執行檔案有三種,分別是exe,和bat。其中,exe和 檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非常大,使...