如何在CMD下把指定文件复制到指定文件夹内?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在CMD下把指定文件复制到指定文件夹内?相关的知识,希望对你有一定的参考价值。

参考技术A (一)
COPY文件复制命令 
1.功能:拷贝一个或多个文件到指定盘上。 
2.类型:内部命令 
3.格式:COPY
[源盘][路径]〈源文件名〉[目标盘][路径][目标文件名] 
4.使用说明: 
(1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化; 
(2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代; 
(3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够; 
(4)文件名中允许使用通配举“*”“?”,可同时复制多个文件; 
(5)COPY命令中源文件名必须指出,不可以省略。 
(6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略; 
(7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略; 
(8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:COPY;[源盘][路径]〈源文件名1〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉; 
(9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY
CON
[盘符:][路径]〈文件名〉; 
(10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格! 
(二)XCOPY——目录复制命令 
1.功能:复制指定的目录和目录下的所有文件连同目录结构。 
2.类型:外部命令 
3.格式:XCOPY
[源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E] 
4.使用说明: 
(1)XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝隐藏文件和系统文件; 
(2)使用时源盘符、源目标路径名、源文件名至少指定一个; 
(3)选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录; 
(4)选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低。 

批处理如何在指定文件夹内搜索某个关键字,包含这个关键字的文件或文件夹要删除?

文件夹包含多层文件夹,搜索一个关键词,把包含这个关键词的文件或文件夹删除掉

不清楚你的实际文件/情况,仅以问题中的样说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI/GB2312,跟要处理的文件或文件夹放一起双击运行

<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 查找并删除当前目录下所有名称中包含有指定关键字/指定字符的文件和文件夹
set #=Any questions&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "self=%~f0"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$keywords=@"
关键字1
关键字2
关键字3
关键字n
"@;

$self=get-item -literal $env:self;
$current=$self.Directory.FullName.trimend('\\');
$arr=$keywords.toLower().trim("`r`n") -split '[\\r\\n]+';
$files=@(dir -literal $current -recurse|?$_.FullName -ne $self.FullName);
for($i=0;$i -lt $files.length;$i++)
    if(test-path -literal $files[$i].FullName)
        $ismatch=$false;
        $name=$files[$i].Name.toLower();
        for($j=0;$j -lt $arr.length;$j++)
            if($name.Contains($arr[$j]))$ismatch=$true;break;
        
        if($ismatch)
            write-host $files[$i].FullName;
            if($files[$i] -is [System.IO.FileInfo])
                remove-item -literal $files[$i].FullName -force -ErrorAction SilentlyContinue;
            else
                remove-item -literal $files[$i].FullName -recurse -force -ErrorAction SilentlyContinue;
            
        
    

参考技术A

您可以使用批处理的 forfiles 命令来在指定的文件夹内搜索某个关键字,并删除包含这个关键字的文件或文件夹。具体的做法如下:

    在批处理文件中,首先使用 cd 命令切换到要搜索的文件夹所在的目录。

    然后,使用 forfiles 命令来进行搜索。该命令的语法如下:

    forfiles /P <path> /S /M *<keyword>* /C "cmd /c del /Q @path"


    其中,

    /P 参数指定要搜索的文件夹路径,例如 /P C:\\my_folder。

    /S 参数表示递归搜索子目录。

    /M 参数指定要搜索的文件名关键字,例如 /M *keyword*。这里的 * 符号表示任意字符,因此搜索的结果会包含以关键字开头或结尾的文件名。

    /C 参数指定对找到的文件进行的操作,即删除这些文件。在这里,我们使用 cmd /c del /Q @path 来删除文件。

    例如,下面的批处理命令会在 C 盘的 my_folder 文件夹内递归搜索以 keyword 开头或结尾的文件,并删除它们:


    cd C:\\

    forfiles /P my_folder /S /M *keyword* /C "cmd /c del /Q @path"


    请注意,使用 forfiles 命令删除文件

参考技术B

    打开文本编辑器,例如记事本,并输入以下内容:

@echo off

rem 设置搜索路径和关键字

set searchPath=c:\\test

set searchKey=keyword

rem 查找包含关键字的文件

for /f "delims=" %%i in ('dir /b /s /a-d "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件

del "%%i"

)

rem 查找包含关键字的文件夹

for /f "delims=" %%i in ('dir /b /s /ad "%searchPath%" ^| findstr /i /c:"%searchKey%"') do (

rem 删除包含关键字的文件夹

rd "%%i" /s /q

)

    保存文件为 delete.bat,并将文件拖拽到命令行窗口中,按回车键运行批处理文件

追问

你好 请问如果匹配的字段在一个文本的列表里该怎么弄

追答

不好意思 我不太明白你的问题,你的意思是在子文件夹里吗?

追问

就是需要匹配的关键词很多 需要放在文本里面 上面的批处理该怎么修改

本回答被提问者采纳

以上是关于如何在CMD下把指定文件复制到指定文件夹内?的主要内容,如果未能解决你的问题,请参考以下文章

cmd获得文件夹内所有文件名称

如何使用bat批处理或cmd,:将一个文件复制为“多个副本“(增量备份,自动重命名)到指定目录

cmd 转到指定文件夹的格式

windows如何用cmd命令解压指定的zip文件到指定目录里?

C++内调用cmd copy命令找不到指定文件

cmd如何批量移动一个文件夹下面N个子文件夹里的指定格式的文件