Board logo

标题: [文本处理] 批处理怎样引用变量的文件名? [打印本页]

作者: hucuibai    时间: 2012-11-19 15:21     标题: 批处理怎样引用变量的文件名?

  1. for /f "tokens=1 delims=_" %%a in ('dir /b "E:\bidumpDatabase\temp\dbfile"') do (
  2. set dbname=%%a
  3.         echo 导入!dbname!
  4. mysql -uroot -p123456 -e "drop database if exists !dbname!;create database !dbname!"
  5. mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql
  6. )
复制代码
以上代码提示文件名、目录名或卷标语法不正确。

应该是!dbname!*.sql引用的不对,麻烦请教各位高手一下,应该要怎么写
作者: tmplinshi    时间: 2012-11-19 15:25

本帖最后由 tmplinshi 于 2012-11-19 15:27 编辑
for /f "tokens=1 delims=_" %%a in ('dir /b "E:\bidumpDatabase\temp\dbfile"') do (
        set dbname=%%a
        echo 导入!dbname!
        mysql -uroot -p123456 -e "drop database if exists !dbname!;create database !dbname!"
        mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql"
)

作者: hucuibai    时间: 2012-11-19 15:27

回复 2# tmplinshi


    版主大人,你这个跟我的不是一样的么?不行耶
作者: tmplinshi    时间: 2012-11-19 15:28

回复 3# hucuibai


    不一样。看红色的双引号。
作者: hucuibai    时间: 2012-11-19 15:32

回复 4# tmplinshi


    红色的双引号?是个什么符号?怎么打出来呢?
作者: tmplinshi    时间: 2012-11-19 15:33

回复 5# hucuibai


    二楼的代码比你顶楼的代码多了一个双引号。红色的那个。
作者: hucuibai    时间: 2012-11-19 15:41

回复 6# tmplinshi


    哦 你是说我少用了个引号是吧,这个是我的错,没有用上去,但是问题不是这个问题,之前我都是用双引号引起来的,是不行的
作者: hucuibai    时间: 2012-11-19 15:46

奇了怪了  我用more打开文件是可以的

more E:\bidumpDatabase\temp\dbfile\!dbname!*.sql
但是这句命令就不行,为什么呢
mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql"
作者: jains521    时间: 2012-11-19 15:49

你获取到得内容是什么??
有可能是你获取到得文件有问题.
你的分割符是 _ 不知道你的文件名中是不是有带 _ 有的话就会找不到文件.
作者: hucuibai    时间: 2012-11-19 16:05

回复 9# jains521


    文件名内的确含有_下划线,有什么办法吗?
作者: jains521    时间: 2012-11-19 16:35

假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
作者: jains521    时间: 2012-11-19 16:36

假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
jains521 发表于 2012-11-19 16:35


很难理解.你用 _ 作为分割符是出于什么目的, 还有你要分割的东西是什么样的.
作者: hucuibai    时间: 2012-11-19 17:04

回复 12# jains521


    文件名是ninja674_logdb.sql  ninja674是我要取的,作为数据库名称,后面用!dbname!*.sql是要找数据库所对应的数据库文件导入数据库,了解?
作者: jains521    时间: 2012-11-19 17:44

文件名 xxx*.sql
还是.xxxxxx.sql
2者是有区别的.
第一个是通配的.就是带有xxx的多个文件
第二个是单个文件.
还有传递的文件. <xxx.sql 是必须单一的文件.
如果.路径表达不清楚.或者文件名含糊.都可能传递失败.




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