Powershell 我的脚本可以在我的计算机上正常工作,但不能在另一台计算机上正常工作
这是我的Powershell 我的脚本可以在我的计算机上正常工作,但不能在另一台计算机上正常工作,powershell,batch-file,download,Powershell,Batch File,Download,这是我的批处理脚本: @ECHO OFF if not "%Minimizado%"=="" goto :Rodando set Minimizado=true start /min cmd /C "%~dpnx0" goto :EOF :Rodando Ping www.google.nl -n 1 -w 1000 if errorlevel 1 (set internet=Nao Conectado) else (set internet=Conectado) if %internet%
批处理脚本:
@ECHO OFF
if not "%Minimizado%"=="" goto :Rodando
set Minimizado=true
start /min cmd /C "%~dpnx0"
goto :EOF
:Rodando
Ping www.google.nl -n 1 -w 1000
if errorlevel 1 (set internet=Nao Conectado) else (set internet=Conectado)
if %internet% == "Nao Conectado" (GOTO Rodando)
echo class Program { public static void Main() { >"%~dpn0.cs" echo using (var wc = new System.Net.WebClient()) { >>"%~dpn0.cs" echo wc.UseDefaultCredentials = true; >>"%~dpn0.cs" echo wc.DownloadFile(@"http://download.microsoft.com/download/1/1/7/117FB25C-BB2D-41E1-B01E-0FEB0BC72C30/WindowsServer2003-KB968930-x86-ENG.exe", @"%~dpn0.installer.exe");}}} >>"%~dpn0.cs" "%systemroot%\microsoft.net\framework\v3.5\csc.exe" /out:"%~dpn0.exe" "%~dpn0.cs" "%~dpn0.exe" "%~dpn0.installer.exe"
powershell.exe -Command "& {if($PSversionTable.PSVersion.Major -ge 3) {Invoke-WebRequest http://download1475.mediafire.com/dgmccvd5felg/cu6x9bzhx3hmz78/Teste.jpg -OutFile %~dpn0.png}}"
del %~dpn0.cs
START %~dpn0.png
首先,它必须运行命令提示符
minimized,这实际上是可行的。但它还必须:
检查互联网连接是否正常
检查是否已安装PowerShell 3.0
,如果未安装,请下载并重试
安装它
安装PowerShell
后,下载映像
删除.cs
文件
运行下载的映像
在我的计算机中,批处理运行得很好,但在任何其他计算机中,都无法正常工作。
你们能告诉我怎么了吗
(我英语说得不流利,请原谅我的语言错误)试试下面的代码:
@echo关闭
如果不是“%miniminado%”,则为“=”转到Rodando
设置“miniminado=true”
开始/分钟指令/C“%~f0”
后藤:EOF
:罗丹多
%SystemRoot%\System32\ping.exe www.google.nl-n 1-w 1000
如果错误级别1转到Rodando
echo类程序{public static void Main(){>“%~dpn0.cs”
回送使用(var wc=new System.Net.WebClient()){>“%~dpn0.cs”
echo wc.UseDefaultCredentials=true;>>“%~dpn0.cs”
echo wc.DownloadFile(@)http://download.microsoft.com/download/1/1/7/117FB25C-BB2D-41E1-B01E-0FEB0BC72C30/WindowsServer2003-KB968930-x86-ENG.exe“,@”%~dpn0.installer.exe“;}}}>>“%~dpn0.cs”
%systemroot%\microsoft.net\framework\v3.5\csc.exe”/out:“%~dpn0.exe”“%~dpn0.cs”
“%~dpn0.exe”
“%~dpn0.installer.exe”
powershell.exe-命令“&{if($PSversionTable.PSVersion.Major-ge 3){调用WebRequesthttp://download1475.mediafire.com/dgmccvd5felg/cu6x9bzhx3hmz78/Teste.jpg -OutFile%~dpn0.png}”
删除“%~dpn0.cs”
开始“%~dpn0.png”
线路
如果%internet%==“Nao Conectado”(GOTO Rodando)
如果internet
的值为Nao Conectado
,则执行时会导致语法错误,因为值中有空格,并且等式条件的左侧没有使用双引号。即使使用valueConectado
,条件也始终为FALSE,因为不带双引号的字符串与带双引号的字符串进行区分大小写的比较
并始终使用设置“variable=value”
,原因请参见
在最后两行中添加双引号,因为批处理文件的路径可能包含1个或多个空格
我还没有检查创建*.cs文件、运行安装程序和运行PowerShell脚本的块。需要的不仅仅是“它不起作用”,还需要一些关于您收到的错误类型的详细信息,或者任何控制台输出都会有帮助。也许这是Java的问题?@ScottSosna我没有更多的话要说,控制台只是自动关闭,不做我在问题中列出的任何事情。唯一要说的是,.cs文件已经创建并删除,但我不知道它是否有用。(我英语说得不流利,请原谅我的语言错误)与其双击打开.bat
文件,不如尝试使用cmd打开.bat
文件的位置,然后打开它,这样您就可以看到错误。因此,我不允许编辑您的答案,而允许编辑运行“%~dpn0.exe”的两个命令“%~dpn0.installer.exe“
每个人都应该在自己的线路上@DaMonki,我认为Minmizado的测试只会运行一次,因为setlocal不存在,但在第二次调用时应该是一个参数。第一个exe确实正确创建,但其他计算机上可能缺少csc.exe。我也不确定链接是否会下载powershell。它似乎下载了一些protectedroots注册表项更新工具。与其他注释一样,控制台的输出和更多的echo/debug语句也会很好。@KoryGill使用miniminado
将块按设计工作。双击批处理文件时,未使用值定义此变量。因此,使用值true
创建环境变量minimizeADO
。然后,使用当前环境变量的副本启动一个新的命令进程,并在批处理文件中再次执行。当前命令进程结束,在使用最小化窗口运行的新命令进程中,定义了变量miniminado
,并具有值true
,因此现在批处理文件正在真正处理中。这很有意义。我想在同一个命令行中多次运行它。做得好,亲爱的,它运行得几乎完美!(^-^). 但是我需要最后一个答案:默认情况下是否安装了Windows 8 PowerShell 3.0?(如果是的话,我至少可以删减我的脚本的7行,我也可能会对在这7行中浪费时间的家伙们说声抱歉。但是如果不是,我需要更多的帮助…@DaMonki PowerShell 3.0已经安装,默认为Windows 8.0,而PowerShell 4.0已经默认为Windows 8.1。