用脚本写一个无需指定路径自动获取当前路径;实现查找目录下所有符合自定类型的文件复制到自定义文件夹内;不用每次指定路径;自动获取;开头定义文件类型和自定义的文件夹名称,只需要复制文件不用复制文件的文件夹
时间: 2023-12-26 12:06:24 浏览: 193
你可以使用以下的 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
rem 定义三种文件类型
set file_types=*.txt *.docx *.pdf
rem 定义三种自定义文件夹名称
set folder_name1=folder1
set folder_name2=folder2
set folder_name3=folder3
rem 定义指定文件夹名称
set dest_folder=destination_folder
rem 获取当前路径
set current_dir=%cd%
rem 复制符合条件的文件到自定义文件夹中
for %%i in (%file_types%) do (
for /r "%current_dir%" %%j in (%%i) do (
for /d %%f in ("%folder_name1%" "%folder_name2%" "%folder_name3%") do (
set folder_path=%%~ff
set folder_name=%%~nxf
if not exist "%folder_path%\%%~nxi" md "%folder_path%\%%~nxi"
xcopy "%%j" "%folder_path%\%%~nxi\" /y
)
)
)
rem 移动自定义文件夹及其包含的所有文件到指定文件夹
for /d %%f in ("%folder_name1%" "%folder_name2%" "%folder_name3%") do (
set folder_path=%%~ff
set folder_name=%%~nxf
if exist "%current_dir%\%dest_folder%\%folder_name%" rd /s /q "%current_dir%\%dest_folder%\%folder_name%"
md "%current_dir%\%dest_folder%\%folder_name%"
move "%folder_path%" "%current_dir%\%dest_folder%\%folder_name%"
)
rem 根据文件类型放置定义的文件夹内
for /d %%f in ("%folder_name1%" "%folder_name2%" "%folder_name3%") do (
set folder_path=%%~ff
set folder_name=%%~nxf
for %%i in (%file_types%) do (
for /r "%current_dir%\%dest_folder%\%folder_name%" %%j in (%%i) do (
if not exist "%folder_path%\%%~nxi" md "%folder_path%\%%~nxi"
move "%%j" "%folder_path%\%%~nxi"
)
)
)
endlocal
```
该脚本首先定义了三种文件类型和三种自定义文件夹名称以及一个指定的文件夹名称。然后获取当前路径并复制符合条件的文件到自定义文件夹中。接着,脚本遍历三个自定义文件夹并将其移动到指定文件夹中,并根据文件类型将文件放置到相应的自定义文件夹中。
用Windows脚本实现自动获取当前路径后查找目录下面所有定义的文件类型并复制到自定义文件夹,然后将自定义文件夹及其包含的所有文件移动到指定文件夹:开头定义三种文件类型和三种自定义文件夹名称以及一种指定的文件夹名称;整体移动到指定文件夹不要删除自定义文件夹
以下是示例代码:
```
@echo off
set "fileTypes=.txt .doc .pdf"
set "folder1=Folder1"
set "folder2=Folder2"
set "folder3=Folder3"
set "destinationFolder=DestinationFolder"
set "currentPath=%cd%"
mkdir %folder1%
mkdir %folder2%
mkdir %folder3%
for %%a in (%fileTypes%) do (
for /r "%currentPath%" %%b in (*%%a) do (
copy "%%b" "%folder1%"
copy "%%b" "%folder2%"
copy "%%b" "%folder3%"
)
)
mkdir %destinationFolder%
xcopy %folder1% %destinationFolder%\%folder1% /s /e /i /y
xcopy %folder2% %destinationFolder%\%folder2% /s /e /i /y
xcopy %folder3% %destinationFolder%\%folder3% /s /e /i /y
echo Files have been copied to %folder1%, %folder2%, and %folder3%.
echo You can find them there and move them manually.
```
这个脚本与之前的脚本基本相同,唯一的区别是在将自定义文件夹及其包含的所有文件移动到指定文件夹时,它们会被移动到名为自定义文件夹名称的文件夹中,而不是直接移动到指定文件夹中。这样就不会删除自定义文件夹。
阅读全文