使用批处理脚本在iis中创建X个应用程序和应用程序池
我目前有这个批处理文件,允许我在IIS中创建应用程序和应用程序池。它可以工作,但只创建一个应用程序和应用程序池 这是我当前的脚本:使用批处理脚本在iis中创建X个应用程序和应用程序池,iis,batch-file,Iis,Batch File,我目前有这个批处理文件,允许我在IIS中创建应用程序和应用程序池。它可以工作,但只创建一个应用程序和应用程序池 这是我当前的脚本: @echo ON setlocal enabledelayedexpansion REM "Content Source path" set arg1=%1 REM "Content destination path" set arg2=%2 REM "apps to setup" set arg3=%3 REM Split virt names an
@echo ON
setlocal enabledelayedexpansion
REM "Content Source path"
set arg1=%1
REM "Content destination path"
set arg2=%2
REM "apps to setup"
set arg3=%3
REM Split virt names and loop through it.
FOR /F "tokens=1* delims=," %%a in (%arg3%) do (
set vir=%%a
set pool=!vir!!poolname!
REM CREATE APPLICATION
%systemroot%\system32\inetsrv\APPCMD add app /site.name:"Default Web Site" /path:/!vir! /physicalpath:"%arg2%"
REM CREATE APP POOL
%systemroot%\system32\inetsrv\appcmd add apppool /name:!pool! /managedPipelineMode:Integrated /processModel.identityType:ApplicationPoolIdentity /enable32BitAppOnWin64:false
REM ASSIGN APP POOL TO APPLICATION
%systemroot%\system32\inetsrv\appcmd set app /app.name:"Default Web Site/!vir!" /applicationPool:!pool!
):END Endlocal
install.bat“c:\source”“c:\target”“APP1、APP2、APP3”
有人能告诉我我做错了什么吗
谢谢。尝试呼叫您的批次:
install.bat "c:\source" "c:\target" APP1,APP2,APP3
没有双引号围绕APP..
并在批处理中设置
args
:
set "arg3=%3,%4,%5"
请尝试呼叫您的批次:
install.bat "c:\source" "c:\target" APP1,APP2,APP3
没有双引号围绕APP..
并在批处理中设置
args
:
set "arg3=%3,%4,%5"
问题1:
:END ENDLOCAL
不应在“for%%a”循环中的右括号后面。这将生成一个语法错误
问题2:如果将:END ENDLOCAL
移动到下一行,则ENDLOCAL
无效。与汇编程序不同,批处理不会执行标签后面的“指令”
问题3::END
标签是多余的。它不在批次中使用
问题4:endlocal
是多余的-到达文件末尾将关闭在相同上下文中运行的任何本地环境
问题5:使用%n
(n数字)分配变量将在分配的值中包含括起的引号。使用%~n
处理包含的引号
第6期:FOR/F
针对的是文件。然而,它将解析带引号的字符串,就像它是一条echo%string%
指令一样,这只是一行,因此您的代码将只处理一次(遇到的“行数”),将第一个,
分隔的标记分配给%%a
,其余的标记分配给%%b
(未使用)
在这种情况下,你需要的要简单得多-
FOR %%a in (%arg3%) do (
问题7:此代码中未建立变量
poolname
。除非在执行代码之前分配它,set pool=!病毒!!池名代码>将池设置为!维尔
本身相当于%%a
。给定您显示的参数和我标记的更改,然后在您的代码中,!游泳池!==!病毒!==%%a
第1期::END-ENDLOCAL
不应在“for%%a”循环中的右括号后面。这将生成一个语法错误
问题2:如果将:END ENDLOCAL
移动到下一行,则ENDLOCAL
无效。与汇编程序不同,批处理不会执行标签后面的“指令”
问题3::END
标签是多余的。它不在批次中使用
问题4:endlocal
是多余的-到达文件末尾将关闭在相同上下文中运行的任何本地环境
问题5:使用%n
(n数字)分配变量将在分配的值中包含括起的引号。使用%~n
处理包含的引号
第6期:FOR/F
针对的是文件。然而,它将解析带引号的字符串,就像它是一条echo%string%
指令一样,这只是一行,因此您的代码将只处理一次(遇到的“行数”),将第一个,
分隔的标记分配给%%a
,其余的标记分配给%%b
(未使用)
在这种情况下,你需要的要简单得多-
FOR %%a in (%arg3%) do (
问题7:此代码中未建立变量poolname
。除非在执行代码之前分配它,set pool=!病毒!!池名代码>将池设置为!维尔
本身相当于%%a
。给定您显示的参数和我标记的更改,然后在您的代码中,!游泳池!==!病毒!==%%a
请查看Microsoft的IIS手册
:)请查看Microsoft的IIS手册
:)