Board logo

标题: [文件操作] 批处理如何根据输入文件名的部分字符串来查找文件并将查找的文件移动到指定文件夹? [打印本页]

作者: lixiyou    时间: 2016-4-23 16:58     标题: 批处理如何根据输入文件名的部分字符串来查找文件并将查找的文件移动到指定文件夹?

如何能编写一个能接收输入参数,并将输入参数作为条件,在以上这些文件名第17位开始查找。找到相关文件并剪切至【 ./输入参数/】  文件夹下。
例如:源文件位置如图:D:\test\

执行批处理后的效果如图:E:\test\【输入参数】\

请各位高手指教。谢谢
作者: Nsqs    时间: 2016-4-23 17:42

  1. @echo off&setlocal enabledelayedexpansion&(set /p files=输入查询文件名:)&for /f "delims=" %%1 in ('dir/b/a-d *%files%*.sql')do set n=%%~n1&set p=!n:~18!&(if not exist !p! call md !p!)&move %%1 !p!\%%~nx1
复制代码

作者: lixiyou    时间: 2016-4-23 22:59

本帖最后由 lixiyou 于 2016-4-23 23:22 编辑

回复 2# Nsqs

非常感谢您的解答。现在还有个问题需要请教。输入参数例如: 201406 。将我查到的数据放入 E:\test\201406 这个文件夹下,将怎样实现?
作者: Nsqs    时间: 2016-4-24 03:22

回复 3# lixiyou


    move %%1 e:\test\!p!\%%~nx1
改一下
作者: lixiyou    时间: 2016-4-24 13:23

回复 4# Nsqs
感谢你!
根据你提供的代码【@echo off&setlocal enabledelayedexpansion&(set /p files=input file&for /f "delims=" %%1 in ('dir/b/a-d *%files%*.sql')do set n=%%~n1&set p=!n:~17!&(if not exist e:\test\!p! call md e:\test\!p!)&move %%1 e:\test\!p!\%%~nx1】 的出来的结果如下图:

如果能得到 输入参数:201406,输出的文件夹也是 【201406】并把*201406*的相关文件放入,那就太感谢了!
最终希望生成 一个文件夹 【201406】同时移动6个201406相关的文件
作者: Nsqs    时间: 2016-4-24 13:49

本帖最后由 Nsqs 于 2016-4-24 14:25 编辑

回复 5# lixiyou
  1. @echo off&setlocal enabledelayedexpansion&(set /p files=输入查询文件名:)&for /f "delims=" %%1 in ('dir/b/a-d *%files%*.sql')do set n=%%~n1&set p=!n:~18!&(if not exist "!files!\" call md !files!)&move "%%1" "!files!\%%~nx1"
复制代码

作者: lixiyou    时间: 2016-4-24 19:55

回复 6# Nsqs

问题已经解决了。感谢你的帮助和支持!

现将解决代码贴上:

@echo off
set "pth=d:\test"
set/p name=input file:
for /f "delims=" %%a in ('dir /a-d /b /s "%pth%\*%name%*.sql"') do (
  set "p=%%~dpa"
  if not exist E:\test\%name%\ call md E:\test\%name%\
  call copy "%%a" "%%p:%pth%=e:\test\%name%\%%" /y
)
pause
作者: pcl_test    时间: 2016-4-24 22:11

回复 7# lixiyou
  1. @echo off
  2. set "fd1=D:\test"
  3. set "fd2=E:\test"
  4. set/p str=查找字符串:
  5. for /r "%fd1%" %%a in ("*%str%*.sql") do (
  6.     if not exist "%fd2%\%str%\" md "%fd2%\%str%\"
  7.     copy "%%a" "%fd2%\%str%\" /y
  8. )
  9. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2