Batch file 如何使管道在第二部分循环?
我的问题是如何做到这一点Batch file 如何使管道在第二部分循环?,batch-file,for-loop,cmd,pipe,Batch File,For Loop,Cmd,Pipe,我的问题是如何做到这一点 FOR /F %pam IN ('echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha') DO (mysqldump --add-drop-database -C --lock-all-tables -pmysecrethaha -ubackup -h33.33.33.33 %pam% | C:\Program0x20Files\7-Zip\7z.exe a -si -bd G:\mys
FOR /F %pam IN ('echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha') DO (mysqldump --add-drop-database -C --lock-all-tables -pmysecrethaha -ubackup -h33.33.33.33 %pam% | C:\Program0x20Files\7-Zip\7z.exe a -si -bd G:\mysql\redmine\%today%\%pam%.7z)
此命令应将每个db转储到单独的文件中,但我得到以下错误:
"a was unexpected at this time."
你觉得怎么样?将%pam%更改为%%a;并将命令放在循环中的新行中,管道应能完美工作 使用该测试批次作为样本
FOR /F "tokens=*" %%a IN ('dir /b /od *.txt') DO (
type %%a | more
)
首先,我想说的是一个长长的命令行lol 其次,为了安全起见,请按以下方式启动for循环:
FOR /F "tokens=* USEBACKQ" %%a IN (`echo show databases; ^| mysql -ubackup -h33.33.33.33 -pmysecrethaha`)
只要养成使用USEBACKQ选项的习惯,并将命令放在反引号中。。。以防您必须在命令行参数或文件路径中使用引号,并在FOR/F命令循环中使用空格
第三,如PA所述,在for循环中使用单个字母作为临时变量(a-z或a-z区分大小写,例如%%a或%%a)
然后,无论何时调用该变量,只要按原样引用即可。例如,如果变量为%%a,则使用%%a进行调用。确保数据库名称中不包含空格。否则,请在循环变量的出现处或其包含的表达式周围使用双引号。