找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29930|回复: 7

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

[复制链接]
发表于 2016-4-23 16:58:56 | 显示全部楼层 |阅读模式
如何能编写一个能接收输入参数,并将输入参数作为条件,在以上这些文件名第17位开始查找。找到相关文件并剪切至【 ./输入参数/】  文件夹下。
例如:源文件位置如图:D:\test\

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

请各位高手指教。谢谢

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

发表于 2016-4-23 17:42:51 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
lixiyou + 1 乐于助人

查看全部评分

 楼主| 发表于 2016-4-23 22:59:08 | 显示全部楼层
本帖最后由 lixiyou 于 2016-4-23 23:22 编辑

回复 2# Nsqs

非常感谢您的解答。现在还有个问题需要请教。输入参数例如: 201406 。将我查到的数据放入 E:\test\201406 这个文件夹下,将怎样实现?
发表于 2016-4-24 03:22:16 | 显示全部楼层
回复 3# lixiyou


    move %%1 e:\test\!p!\%%~nx1
改一下
 楼主| 发表于 2016-4-24 13:23:10 | 显示全部楼层
回复 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相关的文件
发表于 2016-4-24 13:49:04 | 显示全部楼层
本帖最后由 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"
复制代码
 楼主| 发表于 2016-4-24 19:55:05 | 显示全部楼层
回复 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

评分

参与人数 1PB -1 收起 理由
pcl_test -1 勿重复贴码

查看全部评分

发表于 2016-4-24 22:11:10 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:51 , Processed in 0.022174 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表