用脚本写一个无需指定路径自动获取当前路径;实现查找目录下所有符合自定类型的文件复制到自定义文件夹内;不用每次指定路径;自动获取;开头定义文件类型和自定义的文件夹名称,只需要复制文件不用复制文件的文件夹
时间: 2023-12-26 14:06:24 浏览: 26
你可以使用以下的 BAT 脚本实现:
```
@echo off
setlocal enabledelayedexpansion
set "file_type=.txt"
set "target_dir=C:\MyTarget"
set "source_dir=%~dp0"
for /r "%source_dir%" %%i in ("*%file_type%") do (
set "filename=%%~ni"
set "extension=%%~xi"
set "file_dir=%%~dpi"
set "file_dir=!file_dir:%source_dir%=!"
set "file_dir=!file_dir:~1,-1!"
mkdir "%target_dir%" >nul
copy /y "%%~fi" "%target_dir%\!filename!!extension!" >nul
)
echo "Copy completed!"
pause
```
以上脚本会将当前目录下所有文件夹中的后缀为 .txt 的文件复制到 C:\MyTarget 文件夹中,并且会在命令行中输出“Copy completed!”信息。此外,这个脚本会在目标文件夹中创建文件,但不会复制源文件夹的目录结构。你可以将脚本中的 `file_type` 和 `target_dir` 变量值修改为你需要的类型和路径。
相关问题
用Windows脚本写一个自动获取当前路径后查找目录下面所有定义的文件类型复制文件到自定义的文件夹内;再移动到自定义的文件夹内;并把代码逐行解释
以下是一个用Windows脚本实现自动获取当前路径后查找目录下面所有定义的文件类型并复制到自定义文件夹的示例代码:
```
@echo off
setlocal enabledelayedexpansion
REM 获取当前路径
set "current_dir=%CD%"
REM 指定文件类型
set "file_type=*.txt"
REM 指定自定义文件夹
set "custom_folder=C:\CustomFolder"
REM 查找目录下所有指定类型的文件,并复制到自定义文件夹中
for /r "%current_dir%" %%i in (%file_type%) do (
copy "%%i" "%custom_folder%"
)
REM 移动到自定义文件夹
cd "%custom_folder%"
REM 输出复制文件的列表
echo Copied files:
for %%i in (%file_type%) do (
echo "%%~nxi"
)
```
代码逐行解释:
- `@echo off`:关闭命令行窗口上的回显,以避免命令输出显示在屏幕上。
- `setlocal enabledelayedexpansion`:打开延迟变量扩展模式,以便在for循环中使用`!`符号读取变量值。
- `set "current_dir=%CD%"`:使用`%CD%`系统变量获取当前路径,并将其存储在`current_dir`变量中。
- `set "file_type=*.txt"`:指定要查找的文件类型,此处为`.txt`文件类型。
- `set "custom_folder=C:\CustomFolder"`:指定自定义的文件夹路径。
- `for /r "%current_dir%" %%i in (%file_type%) do ( copy "%%i" "%custom_folder%")`:使用`for`循环遍历当前路径下的所有文件(包括子文件夹),并将符合指定文件类型的文件复制到自定义文件夹中。
- `cd "%custom_folder%"`:移动到自定义文件夹。
- `echo Copied files:`:输出复制文件的列表。
- `for %%i in (%file_type%) do (echo "%%~nxi")`:使用`for`循环遍历自定义文件夹中的所有符合指定文件类型的文件,并输出其文件名。其中,`%%~nxi`用于取得文件名和扩展名。
以下是一个用Windows脚本实现自动获取当前路径后查找目录下面所有定义的文件类型并复制到自定义文件夹,然后将自定义文件夹及其包含的所有文件移动到指定文件夹的示例代码:定义三种文件类型和三种自定义文件夹名称以及一种指定的文件夹名称
以下是一个用Windows脚本实现自动获取当前路径后查找目录下面所有定义的文件类型并复制到自定义文件夹,然后将自定义文件夹及其包含的所有文件移动到指定文件夹的示例代码。假设我们定义了3种文件类型(.txt、.docx、.xlsx)和3种自定义文件夹名称(CustomFolder1、CustomFolder2、CustomFolder3),以及一种指定的文件夹名称(TargetFolder)。
```
@echo off
setlocal enabledelayedexpansion
REM 获取当前路径
set "current_dir=%CD%"
REM 指定要查找的文件类型
set "file_types=*.txt *.docx *.xlsx"
REM 遍历每种文件类型
for %%a in (%file_types%) do (
REM 获取当前文件类型的自定义文件夹名称
set "custom_folder=C:\!CustomFolder%%~xa!"
REM 查找目录下所有当前文件类型的文件,并复制到自定义文件夹中
for /r "%current_dir%" %%i in (%%a) do (
copy "%%i" "!custom_folder!"
)
REM 移动自定义文件夹及其包含的所有文件到指定文件夹
move "!custom_folder!" "C:\TargetFolder"
REM 输出移动后的路径
echo !custom_folder! and files moved to: C:\TargetFolder
)
```
代码逐行解释:
- `@echo off`:关闭命令行窗口上的回显,以避免命令输出显示在屏幕上。
- `setlocal enabledelayedexpansion`:打开延迟变量扩展模式,以便在for循环中使用`!`符号读取变量值。
- `set "current_dir=%CD%"`:使用`%CD%`系统变量获取当前路径,并将其存储在`current_dir`变量中。
- `set "file_types=*.txt *.docx *.xlsx"`:指定要查找的文件类型,使用空格分隔多个文件类型。
- `for %%a in (%file_types%) do (`:使用`for`循环遍历每种文件类型。
- `set "custom_folder=C:\!CustomFolder%%~xa!"`:根据当前文件类型定义自定义文件夹名称,例如对于.txt文件类型,自定义文件夹名称为CustomFolder.txt,其中`%%~xa`表示文件类型(.txt、.docx、.xlsx)。
- `for /r "%current_dir%" %%i in (%%a) do (copy "%%i" "!custom_folder!")`:使用`for`循环遍历当前路径下的所有符合当前文件类型的文件,并将其复制到自定义文件夹中。
- `move "!custom_folder!" "C:\TargetFolder"`:将自定义文件夹及其包含的所有文件移动到指定文件夹中。
- `echo !custom_folder! and files moved to: C:\TargetFolder`:输出移动后的路径。注意,此处需要使用`!`符号读取自定义文件夹名称的变量值。