批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文件操作] [已解决]求助批处理查找多个文件并设置变量路径

  1. pushd %~dp0
  2. set pth=%~dp0
  3. for /l %%i in (1 1 3) do (for /f "delims=" %%a in (for %%i in (test1.dll test2.dll test3.dll) do ('dir /b /s /a-d "%pth%"^|find /i %%i')) do (set pth%%i=%%~dpa)
  4. echo %pth1%
  5. echo %pth2%
  6. echo %pth3%
  7. pause
复制代码
想在当前目录下查找子文件夹中的test1.dll、test2.dll、test3.dll并分别设置路径变量pth1、pth2、pth3,不知哪里出错,求大神帮忙,感谢感谢!

回复 26# maghreb
问题要准确表达,不能以偏概全。如果开始就能把问题说清楚,可能就不会出现后来的波折。

TOP

回复 2# qixiaobin0715


再次感谢,困扰我几天的问题得到解决,论坛有你更精彩 :handshake :handshake :kiss: :kiss:

TOP

回复 5# qixiaobin0715
大神,结合您的两段代码测试成功,非常感谢您
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /s /b /a-d aaaaaaaa.dll test1.dll test2.dll test3.dll') do (set /a n+=1 & set aaa=%%~dpa& set path!n!=!aaa:~,-1!)
  4. echo %path1%
  5. echo %path2%
  6. echo %path3%
  7. echo %path4%
  8. pause
复制代码

TOP

回复 23# flashercs


  我刚刚测出来也是这样,正准备回复qixiaobin0715,结合qixiaobin0715大神的两段代码就可以了

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. cd /d "%~dp0"
  3. set n=0
  4. for %%a in (aaaaaaaa.dll test2.dll test3.dll) do (
  5.     set /a n+=1
  6.     for /f "delims=" %%i in ('dir /a-d /b /s %%a') do (
  7.         set path!n!=%%~dpi
  8.     )
  9. )
  10. echo %path1%
  11. echo %path2%
  12. echo %path3%
  13. pause
复制代码
微信:flashercs
QQ:49908356

TOP

回复 11# qixiaobin0715


您写的代码挺好的,非常感谢您,有点小问题的是如果是test2.dll test3.dll就可以,如果改名如aaaaaaaa.dll就显示ECHO 处于关闭状态,期待完善
https://cloud.189.cn/web/share?code=r2MjYfYFzyQn

TOP

回复 20# Batcher

麻烦您测试,如果是test2.dll test3.dll就可以,如果改名如aaaaaaaa.dll就不行
https://cloud.189.cn/web/share?code=r2MjYfYFzyQn

TOP

回复 19# maghreb


换个说法你看是否可以理解:

我的电脑上无法重现你的问题,所以请把你电脑上的bat文件和目录结构打包上传到阿里云盘或百度网盘,以便进一步调查这个问题。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,也不用找我要支付宝或微信账号。如果一定要给,请在群里给大家吧。

TOP

回复 18# Batcher


    没有原始代码啊,就是在当前位置遍历所有文件夹下查找N个文件,分别找到后对每个文件的位置设置一个变量,变量为pth1、pth2、pth3。。。这样

    非常感谢帮忙!

TOP

回复 16# maghreb


    代码本身看不出线索,所以才需要用你测试的原始bat文件和原始目录来进一步调查。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,也不用找我要支付宝或微信账号。如果一定要给,请在群里给大家吧。

TOP

回复 11# qixiaobin0715

--根目录
----test.bat
----1(PS:为一级子文件夹,内有三个文件夹2、3、4)
--------2 (PS:文件夹有文件test1.dll)
--------3 (PS:文件夹有文件test2.dll)
--------4 (PS:文件夹有文件test3.dll)

大神,按此结构测试即可,非常感谢

TOP

回复 15# Batcher

在任何位置新建一个批处理,然后新建几个文件夹(含多级文件夹)和空文件名(比如test1.dll、test2.dll、test3.dll放不同文件夹位置)就可以测试

我之前是用for /f "delims=" %%a in ('dir /b /s /a-d "%pth%"^|find /i "test1.dll"') do (set pth1=%%a)来获取单个文件的路径并设置为变量,就想着用最简单的代码一次性设置N个文件的路径为不同变量

TOP

回复 14# maghreb


    请把你的bat文件和目录结构打包上传到阿里云盘或百度网盘,我试试。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,也不用找我要支付宝或微信账号。如果一定要给,请在群里给大家吧。

TOP

回复 11# qixiaobin0715


    非常感谢大神!!!

    我是在任何位置新建几个文件夹和空文件名来测试的

TOP

返回列表