[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样批量移动文件?

本帖最后由 lxh623 于 2011-11-14 21:10 编辑

我的E盘有个文件夹JP-XIN,下面有很多pdf和txt文件。提取名称到文本a。
E盘根目录有两个文件“文件夹名称1.txt”(一个英文单词),“文件夹名称2.txt”(二个英文单词),包括我的一些文件夹的名字,一行一个文件夹名。反正在E盘,应该可以不包括路径吧?!

第一个批处理、只要JP-XIN的文件名称含有“文件夹名称1.txt”的“一个英文单词”,就移动文件到该文件夹。(用“文件夹名称1.txt”的每一行去搜索文本a。)
第二个批处理、只要JP-XIN的文件名称含有“文件夹名称2.txt”的“两个英文单词”(无顺序和间隔的要求),就移动文件到该文件夹。(用“文件夹名称2.txt”的每一行的两个单词去搜索文本a。)

谢谢您的帮助!

文件夹名称1.txt:(部分)
defoam
spandex

文件夹名称2.txt:(部分)
flame polycarbonate
Die attach
epoxy resin

文件名:
TW200743656--flame retardant halogen-free polycarbonate compositions with high reflectance
US6699929-=die attach adhesives with vinyl ether and carbamate or urea functionality

没明白,举个例子把。

TOP

呵呵,如果只是临时处理一下,很容易解决
直接用Windows系统的搜索功能就可以,搜索、全选、剪切、粘贴
即使是必须同时包含两个单词,只需要在粘贴后,再次重复上一步即可

当然,如果是为了研究批处理的话,这是个不错的课题 :)
可以参考置顶帖
[系列教程]批处理for语句从入门到精通[20101225更新]
http://www.bathome.net/thread-2189-1-1.html
使用其中的 for /f

TOP

回复 1# lxh623
到底是“移动”还是“拷贝”?理解没错的话应该是“拷贝”吧,就拿第一个批处理来说,一个文件名中可能含有多个文件夹的名称,如果是移动的话,到底移动到哪个文件夹呢?
看得多说得多,远比不上写得多。

TOP

回复  lxh623
到底是“移动”还是“拷贝”?理解没错的话应该是“拷贝”吧,就拿第一个批处理来说,一个文 ...
weichenxiehou 发表于 2011-11-2 22:03

谢谢!
是“移动”。
移动的话,后面的就不考虑了。

TOP

文件夹defoam是在E:\下面,还是在E:\JP-XIN\下面?

TOP

本帖最后由 lxh623 于 2011-11-3 17:43 编辑
文件夹defoam是在E:\下面,还是在E:\JP-XIN\下面?
awk 发表于 2011-11-2 23:41

谢谢您!
文件夹defoam是在E:\下面。
一般是第三级、四级、五级目录。
或者可以“文件夹名称1.txt”以及“文件夹名称2.txt”里面带路径。(用最后一个“\”后面的字符搜索文本a。)
或者列出E盘所有文件夹路径tmp.txt。用“文件夹名称1.txt”以及“文件夹名称2.txt”的每一行去提取,得到文本c(过渡一下)。

TOP

我自己学习一晚上,得到代码,不正确。请高手指正修改:
  1. @echo off
  2. for /f "delims=  tokens=1" %%i in (文件夹名称2.txt)
  3. for /f "delims=  tokens=2" %%j in (文件夹名称2.txt)  do
  4. (
  5.     for /f "delims=*" %%k in ('dir /s/b/a-d E:\JP-XIN\*.pdf E:\JP-XIN\*.txt  ^| findstr /i "%%i"^|findstr /i "%%j"')
  6.     (for /f "delims=" %%l in ('dir /s/b/a:d-h E:\ ^|findstr /i "%%i"^|findstr /i "%%j"'>nul') do (
  7.        if not "%%l"=="" move "%%k" "%%~dpl" >nul 2>nul
  8. )))
  9. pause
复制代码

TOP

本帖最后由 lxh623 于 2011-11-9 23:51 编辑

担心第一句是错的。第一个do前面是错的。
下面这样子也有问题,为什么?空格作为分隔符,怎样表示?用“*”,可以吗?
没有明确出现"%%j",先出现“%%k”,合适吗?
%%k得到是带有路径的文件名,对不对?
  1. @echo off
  2. for /f "delims=  tokens=1,2" %%i in (b2.txt) do (
  3.   for /f "delims=" %%k in ('dir /s/b/a-d E:\JP-WKA\*.pdf E:\JP-WKA\*.txt  ^|    findstr /i "%%i"^|findstr /i "%%j"') do (
  4.     for /f "delims=" %%l in ('dir /s/b/a:d-h E:\ ^| findstr /i "%%i"^|findstr /i "%%j"  2^>nul') do (
  5.       if not "%%l"=="" move "%%k" "%%~dpl" >nul 2>nul
  6. )))
  7. pause
复制代码
开始部分可不可以这样:(它后面又能用什么连接词,连接到“ for /f "delims=" %%k in ('dir /s/b/a-d E:\JP-WKA\*”?)
  1. for /f "delims=  tokens=1,2" %%i in (b2.txt) do (echo %%i %%j
复制代码

TOP

怎样把下面两个复合到一起?怎样使得后面的代码能够用到"%%i"、“%%j”?
谢谢!
  1. @echo off
  2. for /f "usebackq tokens=1,2 delims= " %%i in ("文件夹名称2.txt")
  3. do(echo %%i %%j)
复制代码
  1. for /f "delims=" %%k in ('dir /s/b/a-d E:\JP-WKA\*.pdf E:\JP-WKA\*.txt  ^| findstr /i "%%i"^|findstr /i "%%j"') do (
  2.      for /f "delims=" %%l in ('dir /s/b/a:d-h E:\ ^| findstr /i "%%i"^|findstr /i "%%j"  2^>nul') do (
  3.        if not "%%l"=="" move "%%k" "%%~dpl" >nul 2>nul
  4. ))
  5. pause
复制代码

TOP

为什么想要这么个批处理?
因为下载了文献题录,每年更新部分就有上万条。我想,先建立了空白txt,然后,自动整理,就可以节约大量时间。

TOP

不太明白,举个例子,比如有个文件叫作 batch.pdf,是可以与 bat 这个关键词匹配呢?还是只能按 batch 这个完整的单词来看呢?

TOP

不太明白,举个例子,比如有个文件叫作 batch.pdf,是可以与 bat 这个关键词匹配呢?还是只能按 batch 这个 ...
CrLf 发表于 2011-11-11 22:25

拜托大侠!
我想事先的文件夹名称会考虑周到一点。
我想的是,只要含有,就移动。不考虑精确匹配。比如,batchly,batchlise都移动到batch。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. cd e:\JP-XIN
  3. for /f %%a in (e:\文件夹名称1.txt) do if exist *%%a*.* md %%a&move *%%a*.* %%a\
  4. for /f "tokens=1,2" %%a in (e:\文件夹名称2.txt) do (
  5.    for %%c in (*%%a*.*) do (
  6.       set filename=%%c
  7.       if "!filename:%%b=!" neq "!filename!" md "%%a %%b"&move "%%c" "%%a %%b\"
  8.    )
  9. )
复制代码
1

评分人数

TOP

本帖最后由 lxh623 于 2011-11-12 22:14 编辑
CrLf 发表于 2011-11-12 00:33

谢谢您!
怎么在原文件夹建立文件夹,而且移动到那里。
我想的是,E盘有这么个文件夹,移动到那里。
查找文件:
for /f "delims=" %%k in ('dir /s/b/a-d E:\JP-WKA\*.pdf E:\JP-WKA\*.txt  ^| findstr /i "%%i"^|findstr /i "%%j"')
查找目录:
for /f "delims=" %%l in ('dir /s/b/a:d-h E:\ ^| findstr /i "%%i"^|findstr /i "%%j"  2^>nul')
我按照您的,做成下面这样子,不运行:
  1. @echo off&setlocal enabledelayedexpansion
  2. cd e:\JP-WKA
  3. for /f "tokens=1,2" %%a in (e:\文件夹名称2.txt) do (
  4.       for %%c in (*%%a*.*) do (
  5.          set filename=%%c
  6.          if "!filename:%%b=!" neq "!filename!" do (
  7.             for /f "delims=" %%l in ('dir /s/b/a:d-h E:\ ^| findstr /i "%%a"^|findstr /i "%%b"  2^>nul') & move "%%c" "%%~dpl" >nul 2>nul
  8. )))
  9. pause
复制代码

TOP

返回列表