标题: [文本处理] 批处理怎样引用变量的文件名? [打印本页]
作者: hucuibai 时间: 2012-11-19 15:21 标题: 批处理怎样引用变量的文件名?
- 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
- )
复制代码
以上代码提示文件名、目录名或卷标语法不正确。
应该是!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://bathome.net./) |
Powered by Discuz! 7.2 |