Board logo

标题: for循环中如何变量连接与如何使用通配符的问题 [打印本页]

作者: fly2love     时间: 2010-6-2 21:03    标题: for循环中如何变量连接与如何使用通配符的问题

问题描述:
1、有一个列表文件,名字叫做list.txt
      文件列表里面的内容全部都是文件夹的名字,如
    file1
      file2
      file3
2、同时,在E:\image有一批文件,名字分别为:
    file1_test1.bmp
     file2_test2.bmp
     file3_test3.bmp
     .....
也就是说这些文件的名字是文件夹的名字加上一部分其他的内容组成的。

我的任务是把每个文件移动到对应的文件夹里面去。
如: E:\image\file1_test1.bmp 移动到 F:\test\file1
      E:\image\file2_test2.bmp 移动到 F:\test\file2

我的实现步骤如下:
1、for 循环得到 list.txt 里面的文件夹的名字 %%i
2、利用通配符*实现文件的移动,如
      move "E:\image\%%i*.bmp" "F:\test\%%i"

但是这个move语句行不通
与.bmp不能够连接,后面的通配符无法识别
请教高手这句应该怎么写了?
作者: Hanyeguxing     时间: 2010-6-2 21:06
1,可以使用findstr构建表达规则
2,可以使用对字符串的截取、替换、分隔等后,然后用if进行判断构建规则。示例:
@echo off
for /f "usebackq delims=" %%a in ("f:\1 2\list.txt") do set "#%%a=="
for %%a in (*.bmp) do for /f "tokens=1* delims=_" %%b in ("%%a") do (
setlocal enabledelayedexpansion
set c=%%c
if defined #%%b if /i "!c:~0,4!"=="test" echo.文件%%a符合规则:_前为list中存在._后为test加任意字符
Endlocal)
pause

作者: fly2love     时间: 2010-6-2 21:10
谢谢您的回复啦,

不过您好像误会我的意思了,你给的代码是实现判断是否有与文件夹名字相同部分的文件的存在

我的要求其实是在
move "E:\image\%%i*.bmp" "F:\test\%%i"
这一个move 语句的连接问题了?

路径:E:\image、
文件名:\%%i*.  (这里有个通配符)
后缀名:.bmp

这3个怎么连接起来放在move语句里面了?

  Quote:
Originally posted by Hanyeguxing at 2010-6-2 21:06:
1,可以使用findstr构建表达规则
2,可以使用对字符串的截取、替换、分隔等后,然后用if进行判断构建规则。示例:[code]
@echo off
for /f "usebackq de ...


作者: Hanyeguxing     时间: 2010-6-2 21:16
把你写的代码贴出来。
作者: fly2love     时间: 2010-6-2 21:21

@echo off
for /f "usebackq delims=" %%i in (test.txt) do move "E:\image\%%i*.bmp" "F:\test\%%i"
pause
谢谢高手
作者: Hanyeguxing     时间: 2010-6-2 21:24
如果目录必然存在,则可以不用if not exist "F:\test\%%i\" md "F:\test\%%i"
@echo off
for /f "delims=" %%i in (test.txt) do (
if not exist "F:\test\%%i\" md "F:\test\%%i"
move "E:\image\%%i*.bmp" "F:\test\%%i")
pause

@echo off
for /f "usebackq delims=" %%i in ("test.txt") do (
if not exist "F:\test\%%i\" md "F:\test\%%i"
move "E:\image\%%i*.bmp" "F:\test\%%i")
pause
[ Last edited by Hanyeguxing on 2010-6-2 at 21:34 ]
作者: fly2love     时间: 2010-6-2 21:34
谢谢,已经测试可以了

还是基础不扎实,谢谢!可以结贴了!

  Quote:
Originally posted by Hanyeguxing at 2010-6-2 21:24:
[code]@echo off
for /f "delims=" %%i in (test.txt) do (
if not "F:\test\%%i\" md "F:\test\%%i"
move "E:\image\%%i*.bmp" "F:\test\%%i")
pause[/c ...


作者: Hanyeguxing     时间: 2010-6-3 00:03


  Quote:
if exist "a.txt" echo 成功 else echo 失败
这样一条语句中,
如果 存在a.txt 的话的话,运行的结果是:
“成功 else echo 失败”

就是把第一个echo 后面的都显示出来了,应该怎么修改下了?

语法错误,应该写成:
if exist "a.txt" (echo 成功) else echo 失败

作者: Hanyeguxing     时间: 2010-6-3 00:37
else的几种格式化:
if exist a.txt (echo.存在) else echo.不存在

if exist a.txt (
echo.存在
) else echo.不存在

if exist a.txt (echo.存在) else (echo.不存在)

if exist a.txt (echo.存在) else (
echo.不存在
)

if exist a.txt (
echo.存在
) else (
echo.不存在
)