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


    打印还是有问题,必须要用到变量延迟。

rem 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%"
                psftp %%c -l %%d -pw %%e<"%deploy_cmd_file%"
                plink -l %%d -pw %%e %%d@%%c "unzip !fileName!;A"
                echo 主机 %%a.%%b 上的服务 %%f 的应用已经发布
        ) else if !filesCnt! gtr 1 (
                echo 应用程序包有多个,不知道该发布哪个
        )
)
echo 按任意键退出
pause>nul

TOP

回复 5# shootman2


   这个地方不需要变量延迟

  • @echo off
  • for /l %%a in (1 1 100) do (
  •   set deploy_cmd_file=d:\appDeploy_%%a.txt
  •   set fileList=d:\WebContent_201503 28_%%a.zip
  •   set fileName=WebContent_20150328_%%a.zip
  •   for %%x in ("cd /home/weblogic/bea" "put "%%fileList%%" "%%fileName%%"" "exit") do call echo %%~x>>"%deploy_cmd_file%"
  • )
  • pause

bailong360发表于:  2015-03-29  12:08

TOP

回复 2# bailong360


    大神,你写的代码太好了!我又学到一招。可是实际在我的代码中,还有这么点缺陷。

其实我的代码中,让你帮忙写的这段只是其中的一部分,它的外层还有一层for循环。功能必须启用变量延迟,
所以当按照你的代码修改后,还是有问题,我现在就把完整的代码发给你,麻烦你再帮我改改。先谢谢了!

@echo off
setlocal enabledelayedexpansion
for /l %%a in (1 1 100) do (
  set deploy_cmd_file=d:\appDeploy_%%a.txt
  set fileList=d:\WebContent_201503 28_%%a.zip
  set fileName=WebContent_20150328_%%a.zip
  for %%x in ("cd /home/weblogic/bea" "put "!!fileList%!!" "!!fileName%!!"" "exit") do call echo %%~x>>"%deploy_cmd_file%"
)
pause

TOP

回复  bailong360


    good job!very thank you!!!
shootman2 发表于 2015-3-28 23:38



    好像还不对哦!关键的那个for循环,只能写成这样
for %%x in (
***
***
) do ****
写成是 for %%x in (*** ***) do *** 就报错了!

而且就即便是写成了大神你所说的这种的话,一旦路径中带有空格,就自动转成是换行了!

麻烦大神再给帮忙看看!

TOP

回复 2# bailong360


    good job!very thank you!!!

TOP

本帖最后由 bailong360 于 2015-3-29 08:44 编辑

回复 4# shootman2




  • @echo off
  • setlocal enabledelayedexpansion
  • set deploy_cmd_file=d:\appDeploy.txt
  • set fileList=d:\WebContent_20150328.zip
  • set fileName=WebContent_20150328.zip
  • for %%x in ("cd /home/weblogic/bea" "put "%%fileList%%" "%%fileName%%"" "exit"
  • ) do call echo %%~x>>"%deploy_cmd_file%"

bailong360发表于:  2015-03-29  08:42

符合要求否?

奇怪,用[code]发出去总是挤在一行上面...难道是编辑器问题??
1

评分人数

TOP

返回列表