标题: [文件操作] [已解决]复制文件的批处理不能运行? [打印本页]
作者: reddragon1314 时间: 2010-8-9 17:47 标题: [已解决]复制文件的批处理不能运行?
- for /f "delims= " %%i in ('dir e:\*.mp3 /od /s |find "2010"') do copy %%i e:\music\mp3\
复制代码
我想复制2010年后的MP3放到音乐文件夹里,但不知道哪地方不对。
[ 本帖最后由 reddragon1314 于 2010-8-11 07:58 编辑 ]
作者: hfg1977 时间: 2010-8-9 19:43
for /f "tokens=* delims=" %%I in ('dir /a-d/s/b "e:\*.mp3 /od" ^|find "2010"') do copy %%i e:\music\mp3\
作者: reddragon1314 时间: 2010-8-9 21:14
2楼的运行时提示 此时不应有%%i
作者: TX_kakashi 时间: 2010-8-9 21:28
稍微修改了下,应该符合lz要求了这一次
- @echo off
- setlocal enabledelayedexpansion
- :bof
- cls
- title %time%%date%
- set /p myFolder=[把需要整理的文件夹拖到这里并按Enter]:
- if not exist %myFolder%\ goto bof
- call :sortFolder %myFolder%
- echo 整理完毕,按任意键退出.
- pause>nul
- exit
- :sortFolder
- set mp3Count=0
- pushd "%~1"
- if not exist e:\music\mp3\nul md e:\music\mp3
- cd.>mp3List.txt
- cd.>copyList.txt
- title ^>^>^>Searching mp3 files in %~1...^<^<^<
- for /f "delims=" %%a in ('dir /s /b /a-d *.mp3') do (echo %%a#%%~ta>>mp3List.txt)
- title ^>^>^>Creating filtered mp3 list. ^<^<^<
- type mp3List.txt | find "2010" >>copyList.txt
- title ^>^>^>Copying mp3 files^<^<^<
- for /f "delims=#" %%a in (copyList.txt) do (set /a mp3Count=!mp3Count!+1 &&title Total Copied: [!mp3Count!]&& echo Copying [%%~a] && copy "%%~a" e:\music\mp3\ >nul )
- del copyList.txt >nul 2>nul
- del mp3List.txt >nul 2>nul
- exit/b
复制代码
[ 本帖最后由 TX_kakashi 于 2010-8-10 21:14 编辑 ]
作者: hfg1977 时间: 2010-8-10 02:14
- @echo off
- for /f "tokens=* delims=" %%I in ('dir /a-d/s/b/od "e:\*.mp3" ^|find "2010"') do copy %%i e:\music\mp3\
复制代码
作者: FOR 时间: 2010-8-10 02:35 标题: 回复 5楼 的帖子
复制代码
作者: terse 时间: 2010-8-10 03:16
- @echo off
- xcopy /Y /D:1-1-2010 "E:\*.mp3" "E:\music\mp3\" >NUL 2>NUL
- pause
复制代码
作者: reddragon1314 时间: 2010-8-10 09:01
回7楼的。我运行了一下。不能遍历目录,加上 /S参数 也不能复制文件。
另外XCOPY好像必须复制目录吧,我只想复制文件。不想复制目录。
作者: reddragon1314 时间: 2010-8-10 09:05
5楼的代码也不能实现复制文件。
作者: renmingwu 时间: 2010-8-10 09:36
试了半天总提示此时不应该有 | ,不明白为什么,先去看下for语句。
[ 本帖最后由 renmingwu 于 2010-8-10 10:56 编辑 ]
作者: reddragon1314 时间: 2010-8-10 16:36
如果没有“|” 怎么来确定日期呢?
作者: TX_kakashi 时间: 2010-8-10 21:00
如果dir用了/b参数的话,可以简洁输出,比较利于用for /f "delims="命令读取路径以及文件名来进行copy.但是坏处是省略了很多有用的信息比方说文件时间,大小等信息,dir/ b后再用find "2010"是找不到文件时间的。但是如果没有/b参数的话,dir返回了过多的东西,比方说:
2010-08-02 20:03 325,779,631 29036_feralclaw2.mp4
for /f "delims="....的作用是读取每一行的全部内容,这样的话,你的%%i就包含了太多不必要的内容,以至于直接用copy %%i e:\ 就变成了
copy 2010-08-02 20:03 325,779,631 29036_feralclaw2.mp4 e:\
所以lz的代码没有办法运行。
作者: reddragon1314 时间: 2010-8-10 22:20
12楼的 是不是可以通过。
for /f "tokens=4 delims= " 来实现 copy 29036_feralclaw2.mp4 e:\ 呢?
作者: terse 时间: 2010-8-11 02:35
- @echo off
- for /f "tokens=*" %%i in ('dir /a-d /s /b E:\*.mp3') do (
- if "%%~ti" geq "2010" copy "%%i" ""E:\music\mp3\"" >NUL 2>NUL
- )
- pause
复制代码
作者: reddragon1314 时间: 2010-8-11 07:57
多谢 14楼的高手的代码。可以实现目的。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |