批处理打开指定路径下的所有文件

需求:批处理打开指定路径下的所有文件
前提:默认各位同学已经熟悉常用的各种批处理命令,本文仅对涉及到的批处理命令做简单的介绍,有需要进一步学习,可查阅网上其它资料。也可通过CMD命令行窗口通过 [命令] + /? 方式获取命令的详细信息及帮助。

一、需求功能分析

需求:通过批处理脚本逐个打开指定路径文件夹下的所有文件。拆分明确的功能点如下:
功能点1:命令行窗口输入指定的文件夹路径
功能点2:遍历文件夹中的所有文件
功能点3:打开每次遍历的文件
清晰了每一个子功能点,现在使用学习过的批处理命令来实现就很容易啦,代码思路也是比较清晰的。

题外话:这里也建议每一位初学者,养成良好的习惯,不要一上来就猛干代码,拿到任何一份需求,首先要捋清楚功能点以及实现思路,即使在大脑中简单地过一遍也可以,最好在纸上画一下必要的思维导图。(当然,网上也有很多画思维导图工具,不一定要写在不便保存的纸上,这里就不一一介绍啦)

二、实现功能点命令

(1)功能点1:命令行窗口输入指定的文件夹路径,也可直接在代码中写死,本文中为方便扩展,采取输入方式获取文件夹路径,使用SET 命令设置变量。

设置变量的值:SET [变量名]=[]
举例:set var=5  将var变量的值设置为数字5

命令行窗口输入方式设置变量的值:SET /P [变量名]=[命令行窗口输入的值]
举例:set /p var=Please Input Value : 如果窗口输入 Hello World ,则将var变量的值设置为字符串Hello World,等于号后面的Please Input Value :起提示作用,不计入变量值

数学表达式设置变量的值:SET /A [变量名]=[数学表达式]
举例:set /a var=4+5 将var变量的值设置为数学表达式的运算结果数字9

功能点实现代码:set /p folder_path=Please Input Folder Path :(也可写死:set folder_path=E:\TestFile 假设已明确文件夹路径为 E:\TestFile)

(2)功能点2:遍历文件夹中的所有文件,使用FOR命令遍历文件夹及其子文件下的所有文件。

FOR [参数] %%变量名 IN (通配符) DO [执行的命令]
[参数]/D、/R、/L、/F和无参数一共有5种取值
/D:遍历当前路径下的所有文件夹
/R [路径]:深度遍历指定路径下的所有文件,如果没有指定路径则默认在当前路径
/L:需要结合(通配符)一起使用,此时括号内的用法规则为(start, step, end)相当于java语言中的for语句
/F:用于解析文件中的内容
举例:for %%i in (*) do ( echo %%i ) 遍历当前路径下的所有文件并将所有文件名输出到窗口
举例:for /d %%i in (*) do ( echo %%i ) 遍历当前路径下的所有文件夹并将文件夹名输出到窗口
举例:for /r %%i in (*) do ( echo %%i ) 深度遍历当前路径下的所有文件并将文件名绝对路径输出到窗口
举例:for /r E:\TestFile %%i in (*) do ( echo %%i ) 深度遍历E:\TestFile路径下的所有文件并将文件名绝对路径输出到窗口
举例:for /l %%i in (0, 1, 5) do ( echo %%i )0递增到5,递增步长为1
举例:for /f %%i in (E:\test.txt) do ( echo %%i ) 解析E:\test.txt文件内容输出到窗口

功能点实现代码:for /r [指定文件夹路径] %%i in (*) do (执行的命令)

(3)功能点3:打开每次遍历的文件(功能并非一次性全部打开,为避免一次性打开过多文件导致系统内存溢出,故采取逐个打开的方式),使用START命令打开文件。

START ["标题"] [参数] [待打开文件的绝对路径]
[参数]/I、/MIN、/MAX、/SEPARATE、/SHARED、/LOW、/NORMAL、/HIGH等取值
/I:新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境
/MIN:以最小化方式启动窗口。
/MAX:以最大化方式启动窗口。
/SEPARATE:在单独的内存空间中启动 16 位 Windows 程序
/SHARED:在共享内存空间中启动 16 位 Windows 程序
/LOW:在 IDLE 优先级类中启动应用程序
/NORMAL:在 NORMAL 优先级类中启动应用程序
/HIGH:在 HIGH 优先级类中启动应用程序
举例:start E:\test.txt 默认方式打开文本文件
举例:start /min E:\test.txt 已最小化方式打开文本文件
举例:start /max E:\test.txt 已最小化方式打开文本文件

功能点实现代码:start [指定文件]

三、实现的批处理脚本

在这里插入图片描述
批处理脚本详细解析如下:其中::双冒号后的内容为注释
(1)title Open File Script 批处理打开的窗口显示的标题为“Open File Script”
(2)set /p folder_path=Please Input Folder Path : 则将folder_path变量的值设置为命令行窗口待输入字符串,等于号后面的Please Input Folder Path : 起提示作用,不计入变量值,如键入 E:\TestFile
(3)for /r %folder_path% %%i in (*) do (执行的命令) 遍历指定路径下的所有文件,其中 %folder_path% 为上一步键入的指定路径
(4)echo %%i>>D:\AllFilePath.txt 将已遍历的文件绝对路径保存到 D:\AllFilePath.txt 文本中
(5)echo Ready To Open File %%i… 起注释作用,在命令行窗口输出待打开的文件路径,为下一步的start命令做准备
(6)start %%i 用默认方式打开文件
(7)pause 按任意键继续,避免一次性文件被全部打开

四、运行批处理脚本效果

在这里插入图片描述

五、在此基础上扩展:打开指定后缀的文件

需求:要求只打开txt后缀和.jpg后缀的文件,只需在遍历文件中的通配符中指定文件名正则表达式即可
文件名正则表达式:*.txt 和 .jpg,其中代表任意文件名称,指定后缀

代码修改如下:

@echo off
title Open File Script
set /p folder_path=Please Input Folder Path : 
for /r %folder_path% %%i in (*.txt *.jpg) do (
	echo %%i>>D:\AllFilePath.txt
	echo Ready To Open File %%i...
	start %%i
	pause
)
echo Caution : All File Are Viewed And Ready To Exit
pause

运行结果:
在这里插入图片描述

<think>好的,用户想在Windows批处理脚本中修改默认打开文件路径。首先,我需要回忆一下批处理脚本的基本命令,比如使用`cd`命令来切换当前目录。用户提到的参考内容里有提到批处理文件是执行一系列命令的文本文件,扩展名是BAT或CMD,所以肯定是用这些命令来实现路径修改。 然后,用户可能需要两种方法:临时更改当前目录或永久设置路径。临时更改的话,直接使用`cd /d 路径`,加上`/d`参数可以切换不同驱动器。例如,`cd /d D:\work`。这样后续的命令就会在这个路径下执行。 如果是永久修改,可能需要修改环境变量,比如`PATH`。使用`setx`命令可以永久设置环境变量,比如`setx PATH "%PATH%;D:\new_path"`。不过要注意,永久修改会影响所有后续的会话,可能需要重启才能生效。 另外,用户的问题可能涉及到文件操作,比如需要指定某个文件的位置。这时候,可能需要在脚本中指定完整路径,或者先切换到该目录再执行操作。例如,`start "" "D:\files\program.exe"`可以直接打开指定路径的程序。 还要考虑用户是否有权限修改路径,特别是永久修改环境变量可能需要管理员权限。所以在脚本中可能需要以管理员身份运行,或者提示用户需要权限。 最后,生成相关问题的时候,需要考虑用户可能的后续疑问,比如如何添加环境变量、处理带空格的路径、切换驱动器等。这些都是常见的问题,用户可能遇到的情况。</think>在Windows批处理脚本中修改文件路径可以通过以下方法实现: ### 一、临时更改当前工作目录 使用`cd`或`chdir`命令,结合`/d`参数切换不同磁盘分区: ```bat @echo off cd /d "D:\work\project_files" echo 当前路径已切换到:%cd% start excel.exe report.xlsx ``` `/d`参数支持跨驱动器切换[^1],双引号可处理含空格的路径 ### 二、永久修改环境变量路径 通过`setx`命令修改用户/系统环境变量: ```bat :: 添加新路径到用户级PATH变量 setx PATH "%PATH%;C:\new_tools\bin" :: 修改临时变量(仅当前会话有效) set TEMP_DIR=E:\temp_data ``` ### 三、路径操作注意事项 1. 使用`pushd`/`popd`保存/恢复路径栈: ```bat pushd "C:\Program Files" dir > listing.txt popd ``` 2. 带空格路径必须用双引号包裹 3. 获取脚本自身路径: ```bat set script_path=%~dp0 echo 脚本所在目录:%script_path% ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值