Bat脚本获取当前目录下所有文件输出至文件
时间: 2024-03-21 19:42:06 浏览: 20
您可以使用以下的Bat脚本来获取当前目录下所有文件,并将输出写入到一个文件中:
```
@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=output.txt
rem 删除旧的输出文件(如果存在)
if exist %OUTPUT_FILE% del %OUTPUT_FILE%
rem 遍历当前目录下的所有文件并输出
for %%f in (*) do (
echo %%f >> %OUTPUT_FILE%
)
echo "文件列表已输出至 %OUTPUT_FILE%"
```
该脚本会先删除旧的输出文件(如果存在),然后遍历当前目录下的所有文件,并将文件名逐行输出到指定的输出文件中。最后,输出一个提示消息,指示文件列表已输出至指定文件。
相关问题
bat脚本如何获取当前脚本所在文件路径
你可以使用 `%~dp0` 来获取当前批处理脚本所在的路径。 `%0` 表示当前脚本的名称,`%~dp0` 表示当前脚本所在的驱动器号和路径。其中, `%~d0` 表示当前脚本所在的驱动器号, `%~p0` 表示当前脚本所在的路径。
以下是一个示例:
```
@echo off
echo 当前脚本所在的路径是:%~dp0
```
执行这个脚本时,会输出当前脚本所在的路径。注意,这个路径可能包含空格,所以你需要在引用时用双引号将它们括起来。
例如,如果你的脚本保存在 `D:\my script\myscript.bat`,那么执行这个脚本时会输出:
```
当前脚本所在的路径是:D:\my script\
```
写bat脚本,检索目录及子目录下的所有文件,都移动到检索根目录下
可以使用以下的bat脚本实现:
```
@echo off
setlocal enabledelayedexpansion
set "root=%~dp0" // 设置检索根目录为当前脚本所在目录
for /r "%root%" %%a in (*) do (
set "filePath=%%~fa"
set "fileName=%%~nxa"
move "!filePath!" "%root%!fileName!" > nul
)
echo 操作完成!
pause
```
解释:
1. `setlocal enabledelayedexpansion`:启用变量的延迟环境扩展,以便在循环中使用变量。
2. `set "root=%~dp0"`:将脚本所在目录赋值给变量 `root`。
3. `for /r "%root%" %%a in (*) do (...)`:递归遍历 `root` 及其子目录下的所有文件,并将每个文件的路径赋值给变量 `filePath`,将文件名赋值给变量 `fileName`。
4. `set "filePath=%%~fa"`:使用 `%%~fa` 获取文件的完整路径。
5. `set "fileName=%%~nxa"`:使用 `%%~nxa` 获取文件的名称及后缀。
6. `move "!filePath!" "%root%!fileName!" > nul`:将当前文件移动到根目录下,并将移动操作的输出重定向到空设备。
7. `echo 操作完成!`:在操作完成后输出提示信息。
8. `pause`:暂停脚本的执行,等待用户按下任意键退出。