bat 拷贝同一名称文件夹下所有文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat 拷贝同一名称文件夹下所有文件?相关的知识,希望对你有一定的参考价值。

比如我要拷贝staff文件夹下面的所有.jpg,.png,.bmp文件(包括子文件夹里的),我要把他们拷贝到D:\picture里。
在我的E:\capture下面有很多这种staff文件夹,他们有可能位于各个层级目录下,深浅不一,杂乱无序,我怎么去通过批处理去实现呢?

不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem 将一个指定目录下多个同名子文件夹里的指定扩展名的图片文件拷贝/复制到另一个指定目录里
mode con lines=5000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set "oldfolder=E:\capture"
set "newfolder=D:\picture"
set "fdname=staff"
set ext=*.jpg *.png *.bmp
if not exist "%oldfolder%" (echo;"%oldfolder%" not found&pause&exit)
if not exist "%newfolder%" (md "%newfolder%")
for /f "delims=" %%a in ('dir /ad/b/s "%oldfolder%\"') do (
if /i "%%~nxa" equ "%fdname%" (
pushd "%%a"
for /f "delims=" %%b in ('dir /a-d/b/s %ext% 2^>nul') do (
echo;"%%b" --^> "%newfolder%\"
)
popd
)
)
echo;%#% +%$%%$%/%@% %z%
pause
exit
参考技术A 直接在命令行输入就行了比如把d:\a文件夹里的文件名写到d:\b\1.txt
开始-运行cmd 进入命令行屏幕输入 dir/b/a-d "d:\a">"d:\b\1.txt"
当然你要把这一句代码写到批处理中执行也行
附注:这只是当前文件夹下不包括子文件夹里文件名,如果要包括,则要在dir后再加/s 不过文件名前就多了盘符和及路径文件夹名
参考技术B 在E:\capture目录下,按ctrl+f,自动跳转到搜索后,输入“种类:”,会出现各种文件类型,下来,选择图片。然后将所有搜索结果,复制粘贴到目标文件夹

如何使用bat批量按文件夹名称筛选文件夹并复制到指定地方?

一个文件夹内有上千个文件夹,文件夹格式为tile_****_****,用一个txt文件夹记录需要的文件夹名比如tile_1111_1111,运行bat后,把这个txt里记录的文件夹复制到一个指定的文件夹下

不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为***.bat,编码选ANSI@echo off&cd /d "%~dp0"
rem 根据一个txt文本文件内列出的文件名称前缀字符,从一个指定目录里查找出符合条件的子文件夹并拷贝/复制到另一个指定目录里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "oldfolder=D:\xxx\原文件夹"
set "newfolder=E:\yyy\新文件夹"
set "txtfille=***.txt"
if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&pause&exit)
if not exist "%newfolder%" md "%newfolder%"
if not exist "%txtfille%" (echo;"%txtfille%" 未找到&pause&exit)
if "%oldfolder:~-1%" equ "\" set "oldfolder=%oldfolder:~,-1%"
if "%newfolder:~-1%" equ "\" set "newfolder=%newfolder:~,-1%"
for /f "delims=" %%a in ('type "%txtfille%"') do (
for /f "delims=" %%b in ('dir /ad-h/b "%oldfolder%\%%a_*" 2^>nul') do (
echo;"%oldfolder%\%%~nxb" --^> "%newfolder%"
)
)
echo;%#% +%$%%$%/%_% %z%
pause
exit
参考技术A @echo off & title 根据列表复制文件夹到指定位置 By 依梦琴瑶

::设置文件夹列表文件
set List=FolderList.txt

::设置主源目录
set SrcFolder=D:\源目标目录

::设置指定保存目录
set SavFolder=E:\最终保存目录

for /f "delims=" %%a in ('type "%List%"') do (
if exist "%SrcFolder%\%%~a\." (
xcopy /s /e /y "%SrcFolder%\%%~a\" "%SavFolder%\%%~a\"
) else (
echo 指定的目录 "%%~a" 不存在。
)
)
pause

脚本保存编码务必设为ANSI,以免中文字符出现乱码。
参考技术B 不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为***.bat,编码选ANSI@echo off&cd /d "%~dp0"
rem 根据一个txt文本文件内列出的文件名称前缀字符,从一个指定目录里查找出符合条件的子文件夹并拷贝/复制到另一个指定目录里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "oldfolder=D:\xxx\原文件夹"
set "newfolder=E:\yyy\新文件夹"
set "txtfille=***.txt"
if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&pause&exit)
if not exist "%newfolder%" md "%newfolder%"
if not exist "%txtfille%" (echo;"%txtfille%" 未找到&pause&exit)
if "%oldfolder:~-1%" equ "\" set "oldfolder=%oldfolder:~,-1%"
if "%newfolder:~-1%" equ "\" set "newfolder=%newfolder:~,-1%"
for /f "delims=" %%a in ('type "%txtfille%"') do (
for /f "delims=" %%b in ('dir /ad-h/b "%oldfolder%\%%a_*" 2^>nul') do (
echo;"%oldfolder%\%%~nxb" --^> "%newfolder%"
)
)
echo;%#% +%$%%$%/%_% %z%
pause
exit
参考技术C 不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为***.bat,编码选ANSI@echo off&cd /d "%~dp0"
rem 根据一个txt文本文件内列出的文件名称前缀字符,从一个指定目录里查找出符合条件的子文件夹并拷贝/复制到另一个指定目录里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "oldfolder=D:\xxx\原文件夹"
set "newfolder=E:\yyy\新文件夹"
set "txtfille=***.txt"
if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&pause&exit)
if not exist "%newfolder%" md "%newfolder%"
if not exist "%txtfille%" (echo;"%txtfille%" 未找到&pause&exit)
if "%oldfolder:~-1%" equ "\" set "oldfolder=%oldfolder:~,-1%"
if "%newfolder:~-1%" equ "\" set "newfolder=%newfolder:~,-1%"
for /f "delims=" %%a in ('type "%txtfille%"') do (
for /f "delims=" %%b in ('dir /ad-h/b "%oldfolder%\%%a_*" 2^>nul') do (
echo;"%oldfolder%\%%~nxb" --^> "%newfolder%"
)
)
echo;%#% +%$%%$%/%_% %z%
pause
exit
参考技术D 不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为***.bat,编码选ANSI@echo off&cd /d "%~dp0"
rem 根据一个txt文本文件内列出的文件名称前缀字符,从一个指定目录里查找出符合条件的子文件夹并拷贝/复制到另一个指定目录里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "oldfolder=D:\xxx\原文件夹"
set "newfolder=E:\yyy\新文件夹"
set "txtfille=***.txt"
if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&pause&exit)
if not exist "%newfolder%" md "%newfolder%"
if not exist "%txtfille%" (echo;"%txtfille%" 未找到&pause&exit)
if "%oldfolder:~-1%" equ "\" set "oldfolder=%oldfolder:~,-1%"
if "%newfolder:~-1%" equ "\" set "newfolder=%newfolder:~,-1%"
for /f "delims=" %%a in ('type "%txtfille%"') do (
for /f "delims=" %%b in ('dir /ad-h/b "%oldfolder%\%%a_*" 2^>nul') do (
echo;"%oldfolder%\%%~nxb" --^> "%newfolder%"
)
)
echo;%#% +%$%%$%/%_% %z%
pause
exit

以上是关于bat 拷贝同一名称文件夹下所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

bat批量删除特定开头同一类型文件?

bat拷贝D:\log文件夹下所有文件至D:\Logbak下自动生成以当天日期为名的文件夹下,求指教

window下批处理操作:从Linux机器下拷贝文件

bat复制文件夹下所有文件到另一个目录

如何用bat复制一个文件夹到另一个文件夹去?

怎么用bat写出指定文件夹下几天前的所有文件