使用批处理获取当前目录所有文件及子目录路径

5星 · 超过95%的资源 需积分: 34 51 下载量 136 浏览量 更新于2024-09-16 收藏 4KB TXT 举报
"这篇文章主要介绍了如何使用批处理脚本来获取当前目录下所有文件的完整路径。批处理是Windows操作系统中的DOS命令行环境下的一种程序执行方式,通过编写简单的脚本文件,可以自动化执行一系列命令。这里提供的批处理脚本不仅可以列出当前目录下的文件路径,还能判断指定文件是否存在,并将结果输出到文本文件中。" 批处理是Windows系统中的一种自动化工具,允许用户通过编写.bat或.cmd格式的脚本来执行一系列DOS命令。在本文提到的批处理脚本中,主要涉及以下几个知识点: 1. **for /f** 命令:这是批处理中用来循环处理文件或命令输出的命令。在这个例子中,`for /f "delims=" %%i in ('dir/a/s/b/on*.*') do (...)` 是用来遍历当前目录及其子目录下所有非隐藏(/a)的文件(/b),并将每个文件名赋值给变量`%%i`。 2. **set** 命令:用于设置环境变量。在脚本中,`set file=%%~fi` 和 `set ùfile=!file:%cd%/=!"` 分别用来存储文件的完整路径和去除当前目录前缀后的路径。 3. **delayed expansion**:通过`setlocal EnableDelayedExpansion` 开启延迟环境变量扩展,使得在for循环中能够修改并使用环境变量。 4. **字符串替换**:`setfile=!file:/=/!` 是用来替换路径中的反斜杠(/)为Windows路径分隔符(\),以适应批处理内部的处理。 5. **echo** 命令:将处理后的文件路径写入到.txt文件中,如 `echo!file!>>.txt`。 6. **if exist** 语句:用于检查文件或目录是否存在。例如,`if exist "%~f1"` 判断指定的文件是否存在于当前目录。 7. **for /r /d** 命令:用于递归地遍历目录树,`for /r /d %%d in (*.*) do (...)` 会查找所有子目录下的目录(/d)。 8. **call** 语句:调用批处理脚本内的标签,如 `call:next"%%i"` 调用名为`next`的子过程。 9. **标签(Label)**:如 `:next`,用于组织批处理脚本的流程控制。 10. **findstr** 命令:在文本中搜索特定的字符串,如 `echo%%jpg:%cd1%=%%|findstr.` 用于在字符串中查找特定字符并提取结果。 11. **for /?** 语法:`FOR %%a IN (C:D:E:F:) DO cd/d %%a` 这个循环会遍历C盘到F盘,然后改变当前目录到每个盘符的根目录。 12. **pause** 命令:暂停批处理的执行,等待用户按下任意键后再继续。 这些批处理技术可用于自动化文件管理和日志记录等多种场景,极大地提高了操作效率。通过理解和运用这些命令,用户可以编写更复杂的批处理脚本来解决日常的系统管理任务。