求个批处理,移动文件到文件夹的。以前见过但是一时间不好找。
批处理吧
全部回复
仅看楼主
level 1
8334936 楼主
要就很简单
已知一个【列表.txt】文件中是要复制的文件的路径(随时变动)
例如: d:\a\b\c\文件.属性 (多行)
要求批处理在任何位置都可以读取到 和他在一个目录下的 列表.TXT文件
然后 用SET 命令 让我选择 要复制到的目标 可能是磁盘也可能是目录,也许是不存在的目录
实例执行时 应该为
请选择目标
我输入目标为A
移动 列表中的第一个文件到 A
移动 列表中第二个文件到A
移动 列表中第三个文件到A 知道结束!
2015年02月25日 13点02分 1
level 13
@Echo Off
Set /P NPath=
Set NPath=%NPath:"=%
If Not Exist "%NPath%" Md "%NPath%"
For /F "Delims=" %%i In (列表.txt) Do Copy "%%~i" "%NPath%"
Set /P=完成!
2015年02月26日 05点02分 2
非常感谢大神,顺便求教一下 Set NPath=%NPath:"=%这句是什么意思 为什么要加 .“呢
2015年02月26日 20点02分
@8334936 去除掉引号
2015年02月27日 02点02分
回复 aiwozhonghuaba :受教了
2015年02月27日 05点02分
大神 可否根据关键字 自动分类呢?
2015年02月27日 07点02分
level 1
8334936 楼主
大神可否再次回复下,可不可以将 a.TXT中的文件 根据文件名中的关键词 自动分类
比如 a.txt中文件为 复制到 目标
D:\a\b\c\**周星驰**功夫1** ---- 目标\周星驰\
D:\a\b\c\**周星驰**鹿鼎记** ----- 目标\周星驰\
D:\a\b\c\**李连杰**少林寺** -----目标\李连杰\
2015年02月27日 07点02分 3
星号是怎么回事?
2015年02月27日 08点02分
星号是 文件名中 或许包括的其他字符
2015年02月28日 00点02分
@aiwozhonghuaba [冷] 我的要求是否有些过分了。
2015年02月28日 18点02分
@8334936 复制一段a.txt中的内容发上来
2015年03月01日 02点03分
level 13
@8334936 你在bathome的提问清晰多了
@Echo Off
SetLocal EnableDelayedExpansion
Set Keyword=周星驰 李连杰
Set NewPath=D:\test
For %%i In (%Keyword%) Do If Not Exist "%NewPath%\%%i" Md "%NewPath%\%%i"
For /F "Delims=" %%i In (列表.txt) Do (
 Set File=%%~ni
 Set Keyword2=
 For %%j In (%Keyword%) Do If "!File:%%j=!" Neq "!File!" Set Keyword2=%%j
 Copy "%%~i" "%NewPath%\!Keyword2!"
)
Set /P=完成!
2015年03月01日 02点03分 4
你看到我再 批处理论坛发的帖了? 话说你这个也有他那个毛病。批处理在当前目录下执行,会把含有上级目录的复制,如果批处理含有关键字,也会把自己复制走
2015年03月01日 13点03分
@8334936 我也在bathome呆,你的列表是怎么生成的??发一下代码
2015年03月01日 13点03分
@aiwozhonghuaba 就很简单一句 dir /s/b %cd%>列表.txt[吐舌]
2015年03月01日 13点03分
@8334936 做成 dir /b %cd%>这样子好似也可以复制 但我就是不知道如何 把批处理的文件名从列表.txt中去除。
2015年03月01日 13点03分
level 13
@8334936
@Echo Off
SetLocal EnableDelayedExpansion
Set Keyword=周星驰 李连杰
Set NewPath=D:\test
For %%i In (%Keyword%) Do If Not Exist "%NewPath%\%%i" Md "%NewPath%\%%i"
For /F "Delims=" %%i In ('Dir /A-D /B /S') Do (
 If Not %%~xi==.bat (
  Set File=%%~ni
  Set Keyword2=
  For %%j In (%Keyword%) Do If "!File:%%j=!" Neq "!File!" Set Keyword2=%%j
  Copy "%%~i" "%NewPath%\!Keyword2!"
 )
)
Set /P=完成!
2015年03月01日 14点03分 5
[汗]彻底看不懂了,求大神给解释下呗[太开心]
2015年03月01日 14点03分
level 1
8334936 楼主
@aiwozhonghuaba 解决了,我把你们两位大神的代码加在一起,然后修改了下 外观(用户可视的,代码我不会改,看不懂)
终于解决了
而且我发现,关键字可以在文档中设置然后批处理会调用。你们弄得这东西真强大。
瞬间归类整齐的感觉就是好。
把代码发出来,求大神指教、挑错! ORZ
2015年03月01日 19点03分 6
level 1
8334936 楼主
::设置标头
@echo off&setlocal enabledelayedexpansion&COLOR 0a&echo+&title ^|%~n0^|
::设置源文件根目录
For /F "Delims=" %%i In ('Dir /a-d /B ') Do (If Not "%%~ni%%~xi"=="%~n0.bat" echo+%%i>>g
lz
z.ini)
::请设置关键字
set /p gjz=
if "!gjz!"=="" set /p gjz=<D:\备份\关键字.ini
::设置目标
set/p mb=请输入目标后回车确认:
if "!mb!"=="" set mb=%cd%
::运行代码(我把你和那位大神的代码混了下)
for %%a in (%gjz%) do (
findstr /i /c:"%%~a" glzz.ini>%temp%\exist1.$
set/p e=<%temp%\exist1.$
if defined e (
findstr /v /i /c:"%%~a" glzz.ini>%temp%\exist2.$
move %temp%\exist2.$ glzz.ini>nul
md "%mb%\%%~a"
for /f "delims=" %%b in ('type %temp%\exist1.$') do move "%%~b" "%mb%\%%~a\"
) )
IF %cd% NEQ !mb! for /f "delims=" %%a in ('type glzz.ini') do move "%%~a" "%mb%\"
echo+ y|del *.$ 2>nul
del glzz.ini 2>nul
::下面是我自己加的
start mshta vbscript:msgbox("所有文件分类成功\n感谢您的使用!",64+4096,"【通知】")(window.close)
Title 【删除空文件夹】&COLOR 0A
dir %~d0 /ad /b /s |sort /r >>%temp%ql.txt
for /f %%i in (%temp%ql.txt) do rd %%i>nul 2>nul
求大神指点ORZ ORZ ORZ 有错的话,我再改。
2015年03月01日 19点03分 7
1