标题: [文本处理] [已解决]批处理怎么从配置文件中读取一个数值作为文件名查找的参数? [打印本页]
作者: skyflykyo 时间: 2016-1-4 14:51 标题: [已解决]批处理怎么从配置文件中读取一个数值作为文件名查找的参数?
本帖最后由 skyflykyo 于 2016-1-5 08:45 编辑
想把%ITEM2_VALUE%的值作为参数,如果%ITEM1_VALUE%的目录下文件名有包含%ITEM2_VALUE%的文件,则拷贝到C:\aa
现在下面的代码可以读到%ITEM1_VALUE%和%ITEM2_VALUE%的值,但是无法将他们作为查找的参数,求大神指点- @echo off
- :begin
- CALL readconfig ITEM1 ITEM1_VALUE
- CALL readconfig ITEM2 ITEM2_VALUE
- echo %ITEM1_VALUE%
- echo %ITEM2_VALUE%
- cd %ITEM1_VALUE%
- if exist *(%ITEM2_VALUE%)* copy *(%ITEM2_VALUE%)* C:\aa
- pause
复制代码
另外如果该脚本在C盘运行,%ITEM1_VALUE%的值是在D盘的话,cd %ITEM1_VALUE%这条命令无效。这是为什么呢?
作者: skyflykyo 时间: 2016-1-4 14:53
这是readconfig.bat和jnz.ini的代码- readconfig.bat:
- CALL :readconfig %1 %2
-
- :readconfig
- 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
- goto :eof
-
- jnz.ini
- [Common]
- ITEM1=C:\bb
- ITEM2=2206
复制代码
作者: DAIC 时间: 2016-1-4 15:13
配置文件到底是 jvz.ini 还是 jnz.ini
作者: DAIC 时间: 2016-1-4 15:15
另外如果该脚本在C盘运行,%ITEM1_VALUE%的值是在D盘的话,cd %ITEM1_VALUE%这条命令无效。这是为什么呢?
cd /d %ITEM1_VALUE%
作者: 回家路上 时间: 2016-1-4 15:15
- for /f "delims=" %%i in ('dir /a-d /b "*%ITEM2_VALUE%*" "%ITEM1_VALUE%"') do copy /y "%%~fi" "C:\aa\"
复制代码
复制代码
作者: skyflykyo 时间: 2016-1-4 15:26
回复 3# DAIC 写错了,是jvz.ini
作者: skyflykyo 时间: 2016-1-4 15:35
回复 5# 回家路上
提示找不到文件 但是文件夹下确实有文件名包含相应字符串的文件
作者: DAIC 时间: 2016-1-4 16:50
- @echo off
- CALL readconfig ITEM1 ITEM1_VALUE
- CALL readconfig ITEM2 ITEM2_VALUE
- echo +++++++%ITEM1_VALUE%+++++++
- echo +++++++%ITEM2_VALUE%+++++++
- cd /d "%ITEM1_VALUE%"
- echo ------- dir 1 -------
- dir /b /a-d
- echo ------- dir 2 -------
- dir /b /a-d "*%ITEM2_VALUE%*"
- for /f "delims=" %%i in ('dir /a-d /b "*%ITEM2_VALUE%*"') do (
- echo copy /y "%%~fi" "C:\aa\"
- copy /y "%%~fi" "C:\aa\"
- )
- pause
复制代码
执行这个代码,把结果发出来看看。
作者: skyflykyo 时间: 2016-1-4 20:55
回复 8# DAIC
作者: DAIC 时间: 2016-1-4 23:06
回复 9# skyflykyo
从第5、6两行可以看出取到的变量结尾有多余的空格,修改代码:
readconfig.bat- @echo off
- 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
- )
- )
复制代码
作者: skyflykyo 时间: 2016-1-5 08:44
回复 10# DAIC
太感谢了,已经搞定
作者: skyflykyo 时间: 2016-1-5 09:18
回复 10# DAIC
请我如果要进入C:\aa下把复制过去的文件删掉 该怎么写呢
作者: DAIC 时间: 2016-1-5 09:28
回复 12# skyflykyo
进入的命令是 cd /d "C:\aa"
删除文件的命令的 del
你自己先试试吧
作者: skyflykyo 时间: 2016-1-5 13:10
回复 13# DAIC
已经搞定了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |