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

[文本处理] [已解决]批处理怎么从配置文件中读取一个数值作为文件名查找的参数?

本帖最后由 skyflykyo 于 2016-1-5 08:45 编辑

想把%ITEM2_VALUE%的值作为参数,如果%ITEM1_VALUE%的目录下文件名有包含%ITEM2_VALUE%的文件,则拷贝到C:\aa
现在下面的代码可以读到%ITEM1_VALUE%和%ITEM2_VALUE%的值,但是无法将他们作为查找的参数,求大神指点
  1. @echo off
  2. :begin
  3. CALL readconfig ITEM1 ITEM1_VALUE
  4. CALL readconfig ITEM2 ITEM2_VALUE
  5. echo %ITEM1_VALUE%
  6. echo %ITEM2_VALUE%
  7. cd %ITEM1_VALUE%
  8. if exist *(%ITEM2_VALUE%)* copy *(%ITEM2_VALUE%)* C:\aa
  9. pause
复制代码
另外如果该脚本在C盘运行,%ITEM1_VALUE%的值是在D盘的话,cd %ITEM1_VALUE%这条命令无效。这是为什么呢?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 13# DAIC
已经搞定了

TOP

回复 12# skyflykyo


进入的命令是 cd /d "C:\aa"
删除文件的命令的 del
你自己先试试吧

TOP

回复 10# DAIC


    请我如果要进入C:\aa下把复制过去的文件删掉 该怎么写呢

TOP

回复 10# DAIC


    太感谢了,已经搞定

TOP

回复 9# skyflykyo


从第5、6两行可以看出取到的变量结尾有多余的空格,修改代码:
readconfig.bat
  1. @echo off
  2. for /f "skip=1 tokens=1,2 delims==" %%a in (jvz.ini) do (
  3.     if %1==%%a (
  4.         set "%2=%%b"
  5.         echo readconfig get %%a, value is %%b
  6.     )
  7. )
复制代码
1

评分人数

TOP

回复 8# DAIC

TOP

  1. @echo off
  2. CALL readconfig ITEM1 ITEM1_VALUE
  3. CALL readconfig ITEM2 ITEM2_VALUE
  4. echo +++++++%ITEM1_VALUE%+++++++
  5. echo +++++++%ITEM2_VALUE%+++++++
  6. cd /d "%ITEM1_VALUE%"
  7. echo ------- dir 1 -------
  8. dir /b /a-d
  9. echo ------- dir 2 -------
  10. dir /b /a-d "*%ITEM2_VALUE%*"
  11. for /f "delims=" %%i in ('dir /a-d /b "*%ITEM2_VALUE%*"') do (
  12.     echo copy /y "%%~fi" "C:\aa\"
  13.     copy /y "%%~fi" "C:\aa\"
  14. )
  15. pause
复制代码
执行这个代码,把结果发出来看看。

TOP

回复 5# 回家路上
提示找不到文件  但是文件夹下确实有文件名包含相应字符串的文件

TOP

回复 3# DAIC 写错了,是jvz.ini

TOP

  1. for /f "delims=" %%i in ('dir /a-d /b "*%ITEM2_VALUE%*" "%ITEM1_VALUE%"') do copy /y "%%~fi" "C:\aa\"
复制代码
  1. cd /d "其他盘符路径"
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

另外如果该脚本在C盘运行,%ITEM1_VALUE%的值是在D盘的话,cd %ITEM1_VALUE%这条命令无效。这是为什么呢?

cd /d %ITEM1_VALUE%

TOP

配置文件到底是 jvz.ini 还是 jnz.ini

TOP

这是readconfig.bat和jnz.ini的代码
  1. readconfig.bat:
  2. CALL :readconfig %1 %2
  3. :readconfig
  4.   for /f "skip=1 tokens=1,2 delims==" %%a IN (jvz.ini) Do if %1==%%a set %2=%%b & @echo readconfig get %%a, value is %%b
  5.   goto :eof
  6. jnz.ini
  7. [Common]
  8. ITEM1=C:\bb
  9. ITEM2=2206
复制代码

TOP

返回列表