1.在命令行中输出空行: echo.  注意echo跟.中间没有空格。

2.检查文件是否存在:
if exist somefile somecommand
if not exist somefile somecommand

3.windows中类似linux上的/dev/null的空设备: nul, 比如所有输出都重定向到空设备: somecommand > nul


4.暂停一个滚动输出的屏幕,比如一个命令在运行时,不停地向屏幕上输出大量信息,想要停一下看屏幕上有哪些内容,可以按 Ctrl + S


5.如何使用一个命令切换当前路径到不同的驱动盘中,比如从c:/document settings/ 切换到d:/test, 用cd d:/test是切换不过去的,可以这样:
cd /d E:/test
或者:
 pushd E:/test
 
6.批处理脚本中使用for语句,需要两个%把变量名括起来:
for %%variable In set Do statement
而命令行中使用for语法,  一个%就可以了:
for %variable In set Do statement

for  {each item} in {a collection of items}  do {command}
for  %%X in (set) do (command)

这里X表示一个变量名, 后面X都表示一个变量名。
集合中可以是文件名,支持通配符,可以解析文件以及命令的输出。集合中支持修饰符。

For %%X in (eenie meenie miney moe) do (echo %%X)
for %%X in (*.jpg) do command
for %%X in (*.jpg *.gif *.png *.bmp) do command

如果你在命令行, 而不是批处理文件中执行, 注意一定要把%%改成%, 否则会有错误提示“此时不应有 %%X。”:
For %X in (eenie meenie miney moe) do (echo %X)

遍历一系列有序的值(递增,或者递减序列):
for /l %%X in (start, step, end) do command

for /l %%X in (1,1,99) do (echo %%X >> E:/numbers.txt)  把从1到99的值追加到文件 E:/numbers.txt中。

遍历目录(使用/d开关来遍历目录中的所有文件和目录,不含子目录):
for /d %%X in (directorySet) do command
输出c:/下的所有文件目录(不含子目录):
for /d %%X in (C:/*) do echo %%X

递归遍历某个目录,及其子目录下的所有文件、目录:
for /r [parent directory] %%X in (set) do command
比如查找C:/pictures下的所有jpg图片, 输出图片文件名到文件中:
for /r C:/pictures %%X in (*.jpg) do (echo %%X >> E:/listjpg.txt)

解析文本文件,字符串,命令行的输出:
for /f [options] %%X in (source) do command
options是字符串匹配的条件,source表示从哪里找到文本,source可以是文件集合,比如*.txt,*.doc, 也可以是文本字符串,或者一个命令。

FOR /F "tokens=3*" %%i IN ('dir /A-d') DO @echo %%j %%i

'dir /A-d' 列出文件名及大小(不含目录名),如:
2010-01-25  21:56               699 .appcfg_cookies
2010-01-07  12:24                16 .esd_auth
2010-01-26  18:01                38 .lesshst
2010-01-07  12:24               256 .pulse-cookie

以上命令,处理每一行, 把第3行(文件大小)的数据赋值到变量%%i中, 第3行后面的数据(文件名)赋值到%%j中,然后输出文件名和大小:
csystem 中的卷是
的目录 Settings/david
.appcfg_cookies 699
.esd_auth 16
.lesshst 38
.pulse-cookie 256
a.pl 402
a.txt 7,707

options还支持如下选项:
 eol=c           - 指一个行注释字符的结尾(就一个)
 skip=n          - 指在文件开始时忽略的行数。
 delims=xxx      - 指分隔符集。这个替换了空格和跳格键的
                   默认分隔符集。
 tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                   的 for 本身。这会导致额外变量名称的分配。m-n
                   格式为一个范围。通过 nth 符号指定 mth。如果
                   符号字符串中的最后一个字符星号,
                   那么额外的变量将在最后一个符号解析之后
                   分配并接受行的保留文本。
 usebackq        - 指定新语法已在下类情况中使用:
                   在作为命令执行一个后引号的字符串并且一个单
                   引号字符为文字字符串命令并允许在 filenameset
                   中使用双引号扩起文件名称。
                   
更多信息参考 for 的帮助, cmd命令行中输入 for /? 即可查看帮助。


7.可以使用start命令在新的窗口(进程)中启动一个程序:
start winword
也可以用start来启动一个网页甚至是其他的:start http://somesite.com

8.在命令行中显示历史命令, 可以使用 "F7" 键 , 当然可以使用上下箭头来调出前一个,后一个命令

9.使用sleep.exe 30命令来暂停程序30秒, XP中没有sleep.exe命令, 可以去网上下一个, 也可以从windows的网站下载Windows 2003 Server tools。里面包含有很多可以在XP中运行的实用工具。


10.完全删除一个目录,不进行任何提示: rmdir /S /Q  to-be-deleted-dir

11. 用wget.exe(可以从gnuwin32上下载windows版的wget)下载一个网站: wget -mnrp  

12. 按名字,ID强制关闭一个进程:
taskkill /IM notepad.exe
taskkill /PID 827

13.列出系统所有进程
tasklist

14.列出操作系统信息,包括补丁列表等等: systeminfo

15.regini.exe来修改注册表项的权限,即 Access Control List (ACL)

REGINI (Resource kit)

Change Registry Permissions.

Syntax
      REGINI [-m //machinename | -h hivefile hiveroot | -w Win95Directory]
              [-i n] [-o outputWidth]
              [-b] textFiles...
              
最简洁的用法 : regini file.txt  读取file.txt并设定文件中指定的注册表项的权限。(操作本机)

比如设置local machine中的/Software/testregitem项的权限为所有管理员只读:
echo //Registry//Machine//Software//testregitem [2] > adminread.txt
regini.exe adminread.txt

清空某注册表项的权限:
echo //Registry//Machine//Software//testregitem [] > noperm.txt
regini.exe noperm.txt

详情可参考 : http://ss64.com/nt/regini.html

 

 

16.注册表本身的操作可以使用 reg.exe命令来操作(添加,删除,查询,导入,到处......)

Logo

更多推荐