[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]bat中如何转义并实现如下代码

本帖最后由 shootman2 于 2015-3-31 15:21 编辑

@echo off
setlocal enabledelayedexpansion
set deploy_cmd_file=d:\appDeploy.txt
echo off>"%deploy_cmd_file%"
set fileList=d:\WebContent_20150328.zip
set fileName=WebContent_20150328.zip
for %%x in ("cd /home/weblogic/bea" "put "^"%fileList%^" "^"%fileName%^"" "exit") do echo %%~x>>"%deploy_cmd_file%" 这段代码调试有问题

我想实现最后写入到文件中的内容是这样的

cd /home/weblogic/bea
put "d:\WebContent_20150328.zip" "WebContent_20150328.zip"       要加上双引号
exit

这具体该怎么实现呢?求大神帮助!!!

回复 20# pcl_test


    ok!问题得解!

TOP

本帖最后由 pcl_test 于 2015-3-30 10:08 编辑

回复 19# shootman2
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::未见初始化host_list_file、deploy_app_folder、deploy_cmd_file,代码缺失?
  4. for /f "usebackq eol=# tokens=1-14 delims=|" %%a in ("%host_list_file%") do (
  5.         set fileList=
  6.         set fileName=
  7.         set /a filesCnt=0
  8.         for /f "delims=" %%x in ('dir /a /b /s "%deploy_app_folder%\*.zip"') do set fileList=%%x&set fileName=%%~nxx&set /a filesCnt+=1
  9.         if !filesCnt! equ 0 (
  10.                 echo 没有应用可以发布
  11.         ) else if !filesCnt! equ 1 (
  12.                 (
  13.                   echo,cd /d %%g
  14.                   echo,put "!fileList!" "!fileName!"
  15.                   echo,exit
  16.                 )>"%deploy_cmd_file%"
  17.                 echo psftp %%c -l %%d -pw %%e<"%deploy_cmd_file%"
  18.                 echo plink -l %%d -pw %%e %%d@%%c "unzip !fileName!;A"
  19.                 echo 主机 %%a.%%b 上的服务 %%f 的应用已经发布
  20.         ) else if !filesCnt! gtr 1 (
  21.                 echo 应用程序包有多个,不知道该发布哪个
  22.         )
  23. )
  24. echo 按任意键退出
  25. pause>nul
复制代码

TOP

回复 14# pcl_test


setlocal enabledelayedexpansion
for /f "usebackq eol=# tokens=1-14 delims=|" %%a in ("%host_list_file%") do (
        set fileList=
        set fileName=
        set /a filesCnt=0
        for /f "delims=" %%x in ('dir /a /b /s "%deploy_app_folder%\*.zip"') do set fileList=%%x&set fileName=%%~nxx&set /a filesCnt+=1
        if !filesCnt! equ 0 (
                echo 没有应用可以发布
        ) else if !filesCnt! equ 1 (
                echo off>"%deploy_cmd_file%"
                for %%x in ("cd %%g" "put "%%fileList%%" "%%fileName%%"" "exit") do echo %%~x>>"%deploy_cmd_file%"               
                echo psftp %%c -l %%d -pw %%e<"%deploy_cmd_file%"
                echo plink -l %%d -pw %%e %%d@%%c "unzip !fileName!;A"
                echo 主机 %%a.%%b 上的服务 %%f 的应用已经发布
        ) else if !filesCnt! gtr 1 (
                echo 应用程序包有多个,不知道该发布哪个
        )
)
echo 按任意键退出
pause>nul

TOP

回复 17# CrLf


    看来真是我的电脑问题

TOP

回复 16# bailong360


    64位 win7,chrome v36,所见即所得测试结果正常:
  1. @Echo Off
  2. SetLocal EnableDelayedExpansion
  3. For /L %%i In (1 1 100) Do Echo Test%%i
  4. Exit
复制代码

TOP

本帖最后由 bailong360 于 2015-3-29 20:07 编辑

回复 15# CrLf


        解决了,Win8.1 32位 Chrome36下用所见即所得模式发的贴会这样

  1. @Echo OffSetLocal EnableDelayedExpansionFor /L %%i In (1 1 100) Do Echo Test%%iExit
复制代码

PS 这样...

TOP

回复 2# bailong360


    什么浏览器,发一个试试,我看下是怎么回事

TOP

回复 13# shootman2

把你的完整代码发下,发现你发出的三段代码都不完整,不好整合

TOP

回复 12# bailong360


    大神,请继续帮助!

TOP

回复 10# 523066680


    那样似乎十分有趣~并且实用

TOP

回复 9# shootman2


    可以把那个%%a改成%%1,或者%%A

TOP

回复 8# bailong360


    论坛也该内部支持一下彩色代码了,给论坛放个模块的事儿

TOP

回复 8# bailong360


    还是不行的,最外层的语句  for /f "usebackq eol=# tokens=1-14 delims=|" %%a in ("%host_list_file%") do (     中,有tokens=1-14,也就是说
有%%a,%%b,%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k,%%l,%%m,%%n

这一句中 for %%x in ("cd %%g" "put "%%fileList%%" "%%fileName%%"" "exit") do echo %%~x>>"%deploy_cmd_file%"   %%fileList被系统当做 %%f +ilelist处理了!

TOP

本帖最后由 bailong360 于 2015-3-29 18:50 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "usebackq eol=# tokens=1-14 delims=|" %%1 in ("%host_list_file%") do (
  4.         set fileList=
  5.         set fileName=
  6.         set /a filesCnt=0
  7.         for /f "delims=" %%x in ('dir /a /b /s "%deploy_app_folder%\*.zip"') do set fileList=%%x&set fileName=%%~nxx&set /a filesCnt+=1
  8.         if !filesCnt! equ 0 (
  9.                 echo 没有应用可以发布
  10.         ) else if !filesCnt! equ 1 (
  11.                 echo off>"%deploy_cmd_file%"
  12.                 for %%x in ("cd %%g" "put "%%fileList%%" "%%fileName%%"" "exit") do echo %%~x>>"%deploy_cmd_file%"
  13.                 psftp %%3 -l %%4 -pw %%5<"%deploy_cmd_file%"
  14.                 plink -l %%4 -pw %%5 %%d@%%3 "unzip !fileName!;A"
  15.                 echo 主机 %%1.%%2 上的服务 %%6 的应用已经发布
  16.         ) else if !filesCnt! gtr 1 (
  17.                 echo 应用程序包有多个,不知道该发布哪个
  18.         )
  19. )
  20. echo 按任意键退出
  21. pause>nul
复制代码

TOP

返回列表