如何根据指定文件名批量移动文件夹内的文件
bat吧
全部回复
仅看楼主
level 2
鈀傷伈丟給曠壄
楼主
哪位大神能帮忙解答一下以下这个问题:
如何根据指定文件名批量移动文件夹内的文件
2020年06月02日 07点06分
1
level 2
鈀傷伈丟給曠壄
楼主
举例:
文本文档A:文件名清单(纯数字文件名)50个文件名
文件夹B:大数据库文件(文件格式Excel)成千上万个数据
文件夹C:
根据文件A中的清单内容,批量选择文件夹B的文件,并复制到文件夹C中
2020年06月02日 07点06分
2
小小鸽子飞呀飞呢
我看到一个图片的搞得很简单
https://blog.csdn.net/binbin321/article/details/122060042?spm=1001.2014.3001.5502
不过这个是图片的模式,改成excel应该问题不大
2021年12月28日 14点12分
level 8
就要金坷垃
@璐村惂鐢ㄦ埛_000076K馃惥
off&title BacthCopy
::路径换一下就好
for /f "delims=" %%a in (%~dp0\A.txt) do (
if exist "%~dp0\B\%%a" (
copy "%~dp0\B\%%a" "%~dp0\C" >nul
echo %~dps0\B\%%a --^> %~dps0\C
)
)
pause
下面为清单:
文件夹B里有100个文件
下面是效果
2020年06月02日 10点06分
3
鈀傷伈丟給曠壄
你好!哪个位置换路径啊,搞不懂~~
~
2020年06月03日 06点06分
鈀傷伈丟給曠壄
搞不懂把本机路径置换到这个程序的哪个位置
2020年06月03日 07点06分
淡然浅笑0819
我的怎么没反应啊?是不是哪里错了,能发个写好的图片吗?
2021年05月30日 05点05分
level 8
就要金坷垃
@璐村惂鐢ㄦ埛_000076K馃惥
off
for /f "delims=" %%a in (A.txt的路径) do (
if exist "文件夹B的路径\%%a" (
copy "文件夹B的路径\%%a" "%~dp0\C" >nul
echo 文件夹B的路径\%%a --^> 文件夹C的路径
)
)
pause
@鈀傷伈丟給曠壄
2020年06月03日 10点06分
7
就要金坷垃
额,上面那个%~dp0\C也换成C的路径
2020年06月03日 10点06分
轮滑Y颖
感谢您的代码,帮我节省了很多时间。
2021年01月26日 15点01分
柔zz123
请问这个咋样,代码放哪里呢?
2021年09月13日 02点09分
柔zz123
@轮滑Y颖
请问,我用了同样代码,最后显示请按任意键继续,咋回事啊
2021年09月13日 15点09分
level 9
qop_dob
以下代码复制粘贴到记事本,另存为xx.bat,跟txt文件放一起双击运行(注:bat和txt文件必须存为ANSI/GB2312编码)
<# :
echo off&cls
rem 根据一个txt文本文件内列出的多个文件名,从一个指定文件夹里查找出相应的文件并剪切/移动到另一个文件夹里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))))"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$txtfile="文件名清单.txt";
$oldfolder="D:\xxx\文件夹B";
$newfolder="E:\yyy\文件夹C";
if(-not (test-path -liter $txtfile)){write-host ('"'+$txtfile+'" not found');exit;};
if(-not (test-path -liter $oldfolder)){write-host ('"'+$oldfolder+'" not found');exit;};
if(-not (test-path -liter $newfolder)){[void](md $newfolder);};
$dic=New-Object 'System.Collections.Generic.Dictionary[string,int]';
$text=[IO.File]::ReadAllLines($txtfile,[Text.Encoding]::GetEncoding('GB2312'));
for($i=0;$i -lt $text.count;$i++){
$key=$text[$i].toLower();
if(-not $dic.ContainsKey($key)){
$dic.Add($key, 0);
};
};
$files=@(dir -liter $oldfolder|?{$_ -is [System.IO.FileInfo]});
for($i=0;$i -lt $files.length;$i++){
$key1=$files[$i].Name.toLower();
$key2=$files[$i].BaseName.toLower();
if($dic.ContainsKey($key1) -or $dic.ContainsKey($key2)){
write-host $files[$i].FullName;
$newfile=$newfolder.trimend('\')+'\'+$files[$i].Name ;
move-item -liter $files[$i].FullName $newfile;
}
}
2021年01月26日 17点01分
8
qop_dob
@nb123456mp3
按运行后窗口标题栏中的提示联系我
2021年09月14日 13点09分
柔zz123
请问我用ren换文件名后,不能再用bat搜索了
2021年09月15日 07点09分
星光宝贝时代
代码不完整
2021年11月23日 08点11分
大图钉😈小图钉
谢谢哦!按照这个移了两万多个文件
2023年04月25日 03点04分
level 1
学而时习study
move 文件全名包括后缀 移动的文件夹名字
中间有空格的地方需要加空格,然后改成bat,应该就行吧
2021年02月06日 01点02分
9
rmQuSI-
【图片】我就喜欢无脑操作
网页链接
点点鼠标完成的事情,为什么要写代码,写代码程序员干的活
2022年11月23日 05点11分
level 2
黄瓜上的血丝6
对啊,直接move多简单
2021年04月02日 02点04分
10
level 1
1005072719
前来参观
2021年11月15日 08点11分
11
level 1
辛苦的科蜜
插个眼
2022年04月20日 09点04分
15
level 10
-桃花遍故里-
2022年04月20日 16点04分
16
1