Board logo

标题: [文件操作] 批处理命令求助-抓取文件名, 并让另外一个程序调用 [打印本页]

作者: lrf980    时间: 2012-12-1 12:02     标题: 批处理命令求助-抓取文件名, 并让另外一个程序调用

我需要用一个命令处理某个目录下几千个文件. 首先给每个文件生成名字相同的一个目录,同时将该命令处理文件的结果保存到生成的目录中.
我的命令是"C:\vina\vina.exe" --config --ligand *(此处*就是我处理的文件名).pdbqt --out */out.pdbqt --log */log.txt

我尝试写了一个,但是不成功.
@echo off

FOR %%a IN (*.pdbqt) Do (
Set B=%%a~na
MKDIR B
"C:\vina\vina.exe" --config conf.txt --ligand B.pdbqt --out B/out.pdbqt --log B/log.txt
)

不知道问题出在哪,总是不成功.
作者: lrf980    时间: 2012-12-1 19:26

搞定,花了一个下午在网上查,然后改。最后出来这样的。

@echo off&setlocal enabledelayedexpansion


FOR %%i IN (*.pdbqt) DO (

set b=%%~ni

echo !b!

MKDIR !b!

"C:\vina\vina.exe" --config conf.txt --ligand !b!.pdbqt --out !b!/out.pdbqt --log !b!/log.txt
)
作者: BAT-VBS    时间: 2012-12-1 20:49

回复 2# lrf980


    你找个文件名包含空格的测试一下
作者: lrf980    时间: 2012-12-2 10:56

还没有机会试,因为我的文件里面没有空格。不知道是不是哪里有问题,麻烦指教。谢谢。
作者: BAT-VBS    时间: 2012-12-2 10:59

回复 4# lrf980


    随便找个有空格的文件名试试就知道了
作者: lrf980    时间: 2012-12-2 20:18

本帖最后由 lrf980 于 2012-12-2 20:31 编辑

回复 5# BAT-VBS

试了. 不能抓全文件名,只有空格前面的信息, 应该如何改呢?
作者: BAT-VBS    时间: 2012-12-2 20:34

回复 6# lrf980
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*.pdbqt) do (
  4.     set "b=%%~ni"
  5.     echo "!b!"
  6.     mkdir "!b!"
  7.     "C:\vina\vina.exe" --config conf.txt --ligand "!b!.pdbqt" --out "!b!/out.pdbqt" --log "!b!/log.txt"
  8. )
复制代码
试试




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2