使用批处理文件                               

echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

echo
表示显示此命令后的字符

echo off
表示在此语句后所有运行的命令都不显示命令行本身

@
与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。

call
调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令)

pause
运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续

rem
表示此命令后的字符为解释行,不执行,只是给自己今后查找用的

 

一,定义一个时间标题的命令窗口 

@echo off
:1
title 时间 is :%time%
goto 1
pause

 

二,判断两个输入字符是否相等

@echo off
set /p var=请输入第一个字符:
set /p var2=请输入第二个字符:
if "%var%" == "%var2%" (echo 我们相等) else echo 我们不相等
pause

 

三,显示当前文件夹所有的文件清单

@echo off
dir /b /on >list.txt
pause

 

四,显示当前文件夹所有的文件(包括文件)的所有文件的路径

@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('"dir /a/s/b/on *.*"') do (
set file=%%~fi
set file=!file:/=/!
echo !file! >> 路径.txt
)
pause

 

其中& setlocal EnableDelayedExpansion必不可少


 

五,显示当前文件夹下及子文件夹下所有的java文件的路径

@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('"dir /a/s/b/on *.java"') do (
set file=%%~fi
set file=!file:/=/!
echo !file! >> 路径.txt
)
pause

 

其中& setlocal EnableDelayedExpansion必不可少

 

六,删除文件 del 是用来删除文件的,删除文件夹的命令是rd

@echo off
del ddd.txt
pause

 

七,删除文件夹

@echo off
rd ddd
pause

 

八,判断是否存在文件,若存在则显示文件内容

@echo off
if exist sources.list type  sources.list
pause 

 

九,使用批处理按要求批量删除文件夹方法汇总

示例一:

有这样一大堆文件夹结构,例如

abcde
   |-----abcd2000
             |---------0003
             |----------0004
                ........
   |------abcd2001
             |---------0006
             |----------0002
                ........
  |------abcd2002
             |---------0005
             |----------0002
                ........
cdefe
   |-----cdefe2000
             |---------0003
             |----------0004
                ........
   |------cdefe2001
             |---------0006
             |----------0002
                ........
  |------cdefe2002
             |---------0005
             |----------0002
                ........

现在想把第二层目录里按照年代删除,比如只删除abcd2000,abcd2001,cdefe2000,cdefe2001这样的包含2000,2001字段目录以及它下层目录,该怎么做呢

?

1
2
3
4
5
6
7
8
9
@echo off
setlocal enabledelayedexpansion
::设置一级文件夹
set folder=D:\abcde
for /f "delims=" %%a in ('dir /ad /b %folder%') do (
 set str=%%a
 if "!str:~-4!"=="2000" rd %folder%\!str! /s /q
 if "!str:~-4!"=="2001" rd %folder%\!str! /s /q
)

示例二:

我的所有图片都保存在F:\Photography  ,而下面还有N多文件夹,这些文件夹中都有一个叫“.picasaoriginals”的文件。。。注意,这个名字前有一个点!!!

例如 F:\Photography\我@\我@青岛\.picasaoriginals

现在我们需要用一个批处理删除所有F:\Photography子文件夹中,含有.picasaoriginals这个文件夹的。。。

还有,为保险起见。。。请在程序中提示是否要删除这些信息。。。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
echo 正在扫描文件。。。
for /f "delims=" %%a in ('dir /a-d /s /b .picasaoriginals') do (
if /i "%%~nxa"==".picasaoriginals" (
if exist "%%~a" (
echo del /f /q "%%~a">>DelNow.bat
)
)
)
if exist "DelNow.bat" (
ping 0 -n "2">nul
call:qd
)
del /f /q DelNow.bat
exit
   
:qd
cls
set /p q=确认删除吗?(输入Y确定,其它退出):
cls
if /i "%q%"=="Y" (
echo 正在删除中。。。
ping 0 -n "2">nul
call DelNow.bat
cls
echo 删除完成!
ping 0 -n "2">nul
)
goto :eof

示例三:

批量删除电脑中所有带qqq的文件和文件夹

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
echo....文件查找,请等待...
c:\
for /r c: %%a in (.) do @if exist %%a\qqq.* del %%a\qqq.*
for /r c: %%a in (.) do @if exist %%a\qqq rd /s /q %%a\qqq
d:\
for /r d: %%a in (.) do @if exist %%a\qqq.* del %%a\qqq.*
for /r d: %%a in (.) do @if exist %%a\qqq rd /s /q %%a\qqq
e:\
for /r e: %%a in (.) do @if exist %%a\qqq.* del %%a\qqq.*
for /r e: %%a in (.) do @if exist %%a\qqq rd /s /q %%a\qqq
f:\
for /r f: %%a in (.) do @if exist %%a\qqq.* del %%a\qqq.*
for /r f: %%a in (.) do @if exist %%a\qqq rd /s /q %%a\qqq
goto end
:end
echo good bye!

 

十,删除指定文件夹里所有的的文件,文件夹

@echo off
for /d %%i in (E:\jenkinsTest\destination\Practice\*) do @rmdir /s /q "%%i"
pause

 

说明:E:\jenkinsTest\destination\Practice 是要删除的文件夹,@ 连续执行FOR的第一个结果。%i  是变量参数,表示第几个文件或者目录。在批处理文件中(BAT文件)用的是%%i,直接在DOS下面都用%i。/q 是自动应答,对所有的问题作Yes处理。

 

十一,删除不为空的文件夹

rmdir /s /q E:\jenkinsTest\destination\Practice

 

十二,if exist else用法

if exist E:\jenkinsTest\destination\Practice (echo cunzai ) else (echo bucunzai)

 

十三,复制

copy,中文含义为“复制”,一个很容易见名知意的命令,它的作用是复制文件,用法十分简单:copy 源文件 目的路径。
  假设,你需要把d:\test\test.txt这个文件复制到D盘根目录下,那么,使用 copy d:\test\test.txt d:\ 就可以轻易办到。
  当然,这是最简单的情形,在实际使用中,还是会碰到十分复杂的情况的。
  如果D盘根目录下已经存在了一个名为test.txt的文件,那么,复制过去的时候,copy命令就会提示你是覆盖原文件、是放弃复制还是覆盖所有文件。如果你在批量复制的时候,一概覆盖原文件,那么,一个一个地选择十分麻烦,这个时候,你可以使用不加提示就覆盖原文件的参数 /y (相当于自动选择了Yes选项),完整的命令为 copy /y d:\test\test.txt d:\ 。
  如果复制的时候,你还需要把源文件改个名,比如把test.txt改为1.txt的时候,可以直接使用:copy d:\test\test.txt d:\1.txt 这样的命令,也就是说,在指定目的路径的时候,直接指定文件名,那么,新的文件名就是源文件复制之后的名字。
  如果要复制的路径带有空格、&等特殊符号的时候,请使用引号把这些特殊字符括起来,比如: copy "d:\test abc\test.txt" "d:\t&est"
  copy命令除了“复制”文件的功能外,还有一个绝活:合并多个文件为一个文件,具体的格式为:copy 文件1+文件2+文件3+…… 目的路径\新文件名 。例如:copy d:\test.txt+d:\abc.txt d:\test\test.txt,那么,就把D盘根目录下的test.txt和abc.txt两个文件的内容合并为test.txt,并保存到d:\test目录下。
  copy 还有一些参数,但是常用的就上面的用法,更多的用法请在命令行窗口中使用 copy /? 来查询,很容易上手的。
  必须注意的是,copy只能复制文件,对于文件夹的复制,则需要另请高明,动用xcopy来复制。xcopy是copy的高级版本,有更丰富的参数,能实现更加复杂的功能,通吃文件和文件夹的复制,以后将另行介绍,在这里就不展开讲解了。

 

六,编译java文件

1)
@echo off
cd E:\jenkinsTest

javac -d  E:\jenkinsTest\zcd\classZcd TestJavac.java
cd E:\jenkinsTest\zcd\classZcd
java coms.zcd.action.TestJavac


mkdir Practice2
IF %ERRORLEVEL%==0 ECHO success
IF %ERRORLEVEL%==1 ECHO fail

:end
pause

=========
2)
@echo off
cd E:\jenkinsTest

javac -d  .\zcd\classZcd TestJavac.java
cd E:\jenkinsTest\zcd\classZcd
java coms.zcd.action.TestJavac


mkdir Practice2
IF %ERRORLEVEL%==0 ECHO success
IF %ERRORLEVEL%==1 ECHO fail

:end
pause

===========
3)
@echo off
cd E:\jenkinsTest

javac -d  .\zcd\classZcd TestJavac.java
cd .\zcd\classZcd
java coms.zcd.action.TestJavac


mkdir Practice2
IF %ERRORLEVEL%==0 ECHO success
IF %ERRORLEVEL%==1 ECHO fail

:end
pause
===================================

4)
@echo off
cd E:\jenkinsTest
javac -d  .\zcd\classZcd -classpath lib -Djava.ext.dirs=E:\jenkinsTest\lib TestJavac.java
cd .\zcd\classZcd
java coms.zcd.action.TestJavac
mkdir Practice2
IF %ERRORLEVEL%==0 ECHO success
IF %ERRORLEVEL%==1 ECHO fail
:end
pause

其中javac -d  .\zcd\classZcd -classpath lib -Djava.ext.dirs=E:\jenkinsTest\lib TestJavac.java表示编译TestJavac.java文件,并把产生的class文件放入当前目录的子目录classZcd目录下,并以java文件里的包名创建对应的文件夹,-classpath lib -Djava.ext.dirs=E:\jenkinsTest\lib 表示TestJavac.java依赖E:\jenkinsTest\lib 下面的包
==============================
5)编译当前目录下子目录src里所有的java文件
@echo off
cd E:\jenkinsTest
javac -d  .\zcd\classZcd -classpath lib -Djava.ext.dirs=E:\jenkinsTest\lib .\src\*.java
cd .\zcd\classZcd
java coms.zcd.action.TestJavac
mkdir Practice2
IF %ERRORLEVEL%==0 ECHO success
IF %ERRORLEVEL%==1 ECHO fail
:end
pause