一、       Set 命令

回顾一下set 命令有两个参数

1 /a 直接设置了一个变量或者变量表达式,比如:

Set /a var=2; 或者 set /a var+=2;

2 /p 设置一个变量,这个变量来自用户的命令行的输入结果

Set /p num=请选择要执行的操作

If %num% == “1” (

……

)

二 案列

2.1 批量更改文件名

@echo off

echo Ready for updaing file name......

set extension=.rar

set /a sum=0

 

for %%m in (*) do (

      if not"%%m" == "updateFileName.bat" (

           ren %%m%%m%extension%

           set /a sum+=1

      )

)

echo finished update file name. there has%sum% files wereupdated!

set sum=

set extension=

pause

注意:ren 命令是重新命名文件的命令

2.2 循环执行命令

@echo off

echo test ping the host 192.168.3.115......

:again

ping 192.168.3.115 > nul rem > nul don't show themessage

if not %errorlevel% != 0 GOTO again

start "could connect to host" echo success toconnect host 192.168.3.115

2.3 当前路径 (%cd% vs %~dp0)

%cd%: 可以用在批处理文件中,也可以用在命令行中; 其内容为命令的执行路径或批处理文件的执行路径. 也就是我在E盘执行一个d盘的批处理文件, %cd% 显示的还是E盘,并非D盘

%~dp0:只能用于批处理文件中,它打印的只是批处理文件所在的位置,而与在什么位置执行这个文件没有关系,所以我在E盘执行D盘的批处理文件,那么他的显示结果是D盘

@echo off

echo %%cd%%: %cd%

echo %%~dp0%: %~dp0

pause

E:\script_bench>printPath.bat

%cd%: E:\script_bench

%~dp0: E:\script_bench\

'puase' is not recognized as an internal orexternal command,

operable program or batch file.

E:\script_bench>d:

D:\>E:\script_bench\printPath.bat

%cd%: D:\

%~dp0: E:\script_bench\

2.4 将文件名自动更新为当前系统日期

@echo off

 

if not exist %1 (

      echo required filenot exist, please check you file

      goto end

)

 

rem %1: 被修改的文件名 ~x:得到变量的扩展名 %~x1:表示%1 文件的扩展名

set extension=%~x1

 

rem date/T 01/16/2016 Sat

for /f "tokens=1-3 delims=/- " %%c in ('date/T') do(

      rem 如果在for循环初始变量能确定,以及循环次数能确定,那么连续的几个变量是有效的比如这里的cd e

      set date=%%c%%d%%e

)

 

ren %1 %date%%extension%

echo.

echo file: %1 has been updated to %date%%extension%

set extension=

set date=

:end

echo done

pause

2.5 批处理程序中不同盘符路径的切换

这个是很有用的,比如有时候我们想切换到某个盘符路径下执行某个批处理文件,这时候这个可以派上用场

@echo off

echo.

echo 从当前盘符切换到E:\script_bench\files

pushd E:\script_bench\files

echo 当前路径:%cd%

echo 当前路径包含以下文件夹:

dir/ad/b

echo.

echo 执行打包bat

call updateFileName.bat

echo 返回批处理运行时所在的盘符及路径

popd

pause

pushd 要切换的路径

popd:返回最近一次执行pushd命令之间的路径,这样可以避免更改当前的工作路径

dir: /a 展示带有指定属性的文件d属性,表示只显示文件夹 /b 以见简洁的方式显示,详情请查阅dir/?

2.6 计算当前目录以及子目录所占的硬盘空间

@echo off

echo computing the space of current directory......

echo **********************************************

for /f "tokens=*" %%a in ('dir') do (

      echo"%%a"|find" files" > nul && for /f"tokens=3*" %%b in ("%%a") do (

           echo currentdirecotry space: %%b%%c

      )

)

echo **********************************************

echo computing the space of child direcotry........

for /f %%a in ('dir/ad/s/b') do (

      for /f"tokens=*" %%b in ('"dir %%a\"') do (

           echo"%%b"\find" files" > nul for /f "tokens=3*"%%c in ('%%b') do (

                 echo%%a: %%c%%d

           )

      )

)

echo end of computing

Note:

假如执行一个命令,但是不想在屏幕里看到这个命令的执行情况,可以使用"[命令]>nul"就可以屏蔽命令在屏幕上的输出,但是有的命令执行会出错,即使用了">nul"也不能屏蔽命令产生的信息,所以就在后面加" 2>nul"这个,就是"[命令]>nul+空格+2>nul",这样,不管命令是否正确的运行,都不会在屏幕看到这个命令所产生的屏幕显示了。

用"dir"命令可以显示当前目录的文件及文件夹列表,这时如果用"dir>nul",就看不见dir命令执行的屏幕输出了,那么再键入"dirr"时会显示" 'dirr' 不是内部命令,也不是外部命令,也不是批处理文件。",这时如果用"dirr>nul"来屏蔽这个错误,因为依然会出现" 'dirr' 不是内部命令,也不是外部命令,也不是批处理文件。"这个错误提示,这时如果用"dirr>nul 2>nul"的话,就在屏幕上看不到上面的出错提示了

2.7 删除目录下的空文件

@echo off
for /f "tokens=*" %%a in ('dir /b /ad /s^|sort /r') do rd"%%a" 2>nul
echo   删除成功, 已删除所有空文件夹
pause

^: 表示后面的字符只是普通的字符,不具有任何特殊含义

2.8 创建一个空文件

cd.> empty.txt

cd. 没有任何输出

批处理管理文件以及文件夹相关推荐

  1. 批处理清除VisualStudio解决方案文件夹

    批处理清除VisualStudio解决方案文件夹 参考文章: (1)批处理清除VisualStudio解决方案文件夹 (2)https://www.cnblogs.com/wintersun/p/32 ...

  2. CodeProject - 在C#使用SHGetFileInfo获取(管理)文件或者文件夹图标(C#封装Win32函数的一个例子)...

    Obtaining (and managing) file and folder icons using SHGetFileInfo in C# 作者:Paul Ingles  翻译:小新0574 审 ...

  3. 有名无实别占地儿──巧用批处理快删空文件夹

    有人问我,什么工具能寻找和删除硬盘上所有空的文件夹,或只包含空的子文件夹的文件夹?杀鸡焉用宰牛刀,其实不用任何软件,直接使用批处理命令就能实现这个目的. 第一步:进入Windows的MS-DOS窗口( ...

  4. VS将复制过来的文件或文件夹显示到解决方案管理

    假设要将某文件\文件夹A 复制到 某项目B中 1.打开某项目B所在文件夹 2.复制想要复制的文件\文件夹A到项目B所在的文件夹中 3.打开VS,在VS的解决方案管理资源管理器中找到 显示所有文件 4. ...

  5. 怎么设置服务器文件夹多权限管理,如何设置共享文件夹,小编告诉你如何设置共享文件夹权限...

    为了保护服务器共享文件的安全,我们需要设置不同用户访问共享文件的不同权限,防止越权访问共享文件的行为,尤其是防止随意修改共享文件.随意删除共享文件以及随意复制共享文件的行为.下面,小编就来跟大家讲解设 ...

  6. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)

    Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...

  7. 计算机基础文件与文件夹,计算机基础知识 第03部分 操作系统 文件与文件夹管理.ppt...

    文档介绍: 文件(夹)和程序的管理怕鄙扰蛆甩行陀渴侍往拽监扇散抑人蓟毒融莽斜撼熙掺拧茫炕惶甭喜妥超计算机基础知识第03部分操作系统文件与文件夹管理计算机基础知识第03部分操作系统文件与文件夹管理第3章 ...

  8. 计算机考试文件夹改内容,2010年职称计算机考试:文件和文件夹的管理

    "资源管理器"与"我的电脑"一样,都具有文件管理功能.可以进行文件和文件夹的 创建.搜索.选择.复制.移动.重命名.属性.发送等操作,在"资源管理器& ...

  9. Windows 将文件或文件夹拖动到bat批处理上强制删除

    Windows 系统下的默认删除真的特别烂,明明是用admin账号登陆的系统,删除多层嵌套文件时,仍旧报没有权限,必须进入文件夹最后一层,由内向外一层一层删除,太费劲了,气死个人.所以写了一个bat批 ...

最新文章

  1. ORA-01940无法删除当前已连接用户
  2. SpringBoot 嵌入式Servlet容器
  3. 51nod1836-战忽局的手段【期望dp,矩阵乘法】
  4. 转 Android的Activity屏幕切换动画(一)-左右滑动切换
  5. loadrunner中文件的操作
  6. UrlRewriter配置IIS支持伪静态
  7. C#:重启后,AssemblyInfo中AssemblyTitle的描述内容显示正常.........
  8. CS231n-assignment1详解
  9. LINUX下汉化CodeBlocks
  10. 用phpstudy安装DVWA
  11. java cmyk转rgb_Java实现把cmyk格式图片转换为RGB格式图片
  12. CANopen协议本质
  13. 《禅与摩托车维修艺术》读后感
  14. MySQL学习(十六):数据类型之日期与时间类型
  15. 计算机重启无法关机,电脑无法关机或重启是为什么?
  16. 摇号系统 - 【python】
  17. Android分享之“始终”和“仅此一次”
  18. 程序员有前途吗?出路在哪里?
  19. 川大研究生计算机网络挂科,四川大学200多名研究生被清退,让人倍感惋惜,原因几乎相同!...
  20. 邯郸学院计算机老师,刘永进(计算机系)老师 - 邯郸学院 - 院校大全

热门文章

  1. linux系统硬盘数量,Linux ext4文件系统划分磁盘inode数量
  2. 电热耦合_作者特稿︱电网运行环境下基于电热耦合潮流的架空线路应力预估
  3. 获取屏幕的宽高 android,Android获取屏幕宽高的方法
  4. 64centos安装mysql_CentOS7 64位安装mysql教程,亲测完美
  5. SpringCloud Consul Config 配置中心(一)
  6. java执行命令行命令
  7. java调用linux命令
  8. python判断字符串中[提取、判断只含有、判断不含有]中文
  9. 解决gmpy2安装报错:# include “mpfr.h“ compilation terminated.error: command ‘gcc‘ failed with exit status 1
  10. SentOS 7防火墙配置与端口增删改查的命令