Articles of batch file

Windowsbatch file – 分割string以设置variables

我觉得我正在用FOR循环选项圈选。 我试图采取一个string(输出一个命令),并将其拆分为逗号,然后使用每个值来设置,例如 string: USER=Andy,IP=1.2.3.4,HOSTNAME=foobar,PORT=1234 所以我想分开逗号,然后从字面上在SET中使用该variables。 事先并不知道有多less变数。 我尝试过这样的事情: FOR %%L IN (%MYSTRING%) DO ECHO %%L 但是在等号上也会分裂,所以我最终得到了 USER Andy IP 1.2.3.4 等等 我只是想能够做到以下,所以我可以SET USER=Andy等,如: FOR %%L IN (%MYSTRING%) DO SET %%L 我错过了哪些选项或标志?

命令提示符和cmd有什么区别?

我有Windows 7,Windows 8和Windows 10系统,他们都performance相似。 当我将命令提示符input到开始菜单并按下回车键时,会出现一个标题为“命令提示符”的窗口。 我给了它一个蓝色的背景和一个绿色的文字。 当我在命令行中键入start,cmd或bat文件的名称时,会打开一个标题为cmd的窗口,我给出了一个黑色背景和一个绿色文本。 似乎颜色被储存,但…嗯… 当我在Windows 10的开始菜单中inputcmd时,会出现一个标题为“cmd”的窗口,但是它会从命令提示符窗口中调用蓝色背景和绿色文本,但是从该窗口键入cmd会打开一个新的黑色和绿色。 当我双击一个batch file时,会打开一个标题为不同字体的命令提示符窗口和一个白色文本的黑色背景。 当我键入command它只是打印DOS和版权标题,但start command打开一个窗口标题COMMAND.COM与不同的字体和黑色背景与白色文本。 当inputcmd /? 进入参数列表出现在屏幕上。 其中之一是/ Q。 它说它在新的情况下将回声消失。 当我在命令提示符或cmd中键入cmd /Q时,它将使用相同的标题(而不是使用黑色和绿色配色scheme)replace另一个窗口,并且不会closures回显。 当我inputstart cmd /q ,会发生完全相同的情况,但是“启动cmd.exe / q”实际上会产生错误,指出/ Q不是有效的开关。 这真的只是我在这里面临的问题的一小部分,我甚至不能开始整理它。 如果有些老手知道命令提示符的明显区别和调用它们的方式之间的所有细微差别,我会很感激那个把这些乱七八糟的东西给我分类的人。

脚本没有正确接收url

我正在使用一个批处理和Java脚本的组合,我发现使用batch file从网站检索的HTML和我们的地址是没有返回所需的输出,因为它出现时,我在Firefox中使用的URL。 我用来拉HTML的脚本是: @if (@This==@IsBatch) @then @echo off rem **** batch zone ********************************************************* setlocal enableextensions disabledelayedexpansion rem Batch file will delegate all the work to the script engine if not "%~1"=="" ( cscript //E:JScript "%~dpnx0" %1 ) rem End of batch area. Ensure batch ends execution before reaching rem javascript zone exit /b @end // […]

使用当前Powershell凭据进行远程调用

我有一个Powershell脚本,用于远程调用其他服务器上的其他Powershell脚本。 该脚本用于closures并启动不同服务器上的服务。 Powershell脚本的设置方式是,我所要做的就是通过调用serverStartStop [START|STOP]调用它,并自动并有条不紊地将其serverStartStop [START|STOP]到服务器列表,并closures每个服务器上的服务列表。 我最近升级了系统,需要启动一些服务后运行批处理脚本。 我可以远程调用批处理脚本,但批处理脚本会调用另一个尝试访问networking上共享的命令。 该命令失败,因为用于调用该命令的用户没有足够的权限访问该共享。 我已经尝试了几件事情来解决这种情况,并对Powershell中的Invoke-Command行和Windows Batch的runas命令进行了一些研究。 runas命令要求input用户密码,这是不可接受的,因为这是一个自动脚本。 有没有人有任何想法,我可以做这个工作干净,没有用户的互动,而不是做初步的START或STOP呼叫?

如何从命令行设置时区?

我怎样才能从命令行或batch file在Windows中设置时区? 我是否需要使用powershell或cscript?

recursion地批量重命名文件扩展名(windows批处理)

我有很多文件在一个非常复杂的目录结构,由于不值得讨论的原因,我需要重命名所有具有“.inp”扩展名的文件,以“.TXT”扩展名。 有很多其他扩展名的文件,我不想被触及,我想recursion地至less5级。 到目前为止我有: for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd …但是这仅仅是一个层次的目录。 谁能帮忙? 提前致谢!

在cmd.exe中,如何获得一个variables来转义setlocal命令?

我经常发现自己在cmd.exe使用setlocal ,以避免用临时variables污染环境variables空间(并确保命令扩展和延迟扩展都处于活动状态)。 然而,如果我真的想让这些variables中的一个变为可用的话,我就不知所措了。 考虑下面的代码,它给你当前目录的最后一个组件(所以c:\pax\dir1会给你dir1 ): @echoclosures :主要 setlocal enableextensions enabledelayedexpansion 调用:func echo.main_folder =%文件夹% ENDLOCAL goto:eof :FUNC setlocal enableextensions enabledelayedexpansion 设定温度=%cd% 设置文件夹= :funcloop1 如果不是“x%temp:〜-1%”==“x \”( 设置文件夹=!temp:〜-1 !!文件夹! 设置temp =!temp:〜1,-1! goto:funcloop1 ) echo.func_folder =%文件夹% ENDLOCAL goto:eof 当我运行这个,我得到的输出: func_folder = dir1 main_folder = 你可以看到%folder%variables不能在endlocal生存。 但是,如果我离开函数的setlocal/endlocal , tempvariables会污染main的名称空间。 我知道我可以在func的末尾使用set temp= ,这将删除环境variables,但是不包括我已经在外部作用域中使用该variables的情况(在这种情况下它将被完全销毁) 。 有没有一种方法在cmd.exe允许select一组环境variables传播到外部范围,同时仍然防止其他人影响它? 换句话说,你可以同时拥有局部variables和返回variables吗? 另外,请不要告诉我有一个获得最终path组件的更好方法。 这只是一个例子。 其实,你可以告诉我一个更好的方法,因为知道它会很高兴,但它不会回答我的具体问题:-)

如何使用与zip相同的名称的winrar提取文件夹中的所有压缩文件?

我需要迭代一个文件夹,并为每个压缩文件,我需要提取它的名字。 也就是说,如果它的test.zip那么它应该提取到testing文件夹。 同样,它应该遍历我的文件夹及其子文件夹,并提取的东西。 我写了下面的代码,但它不提取与压缩的名称。 请指教。 cd %CD%\Setups for /r %%i in ("*.zip") do ( echo "%%~fi" "C:\Program Files (x86)\WinRAR\WinRAR.exe" a -afzip "%%~dpi" "%%~fi" echo came after unzipping del /S /Q "%%~fi" ) exit \b

Windows批处理脚本url解码

我有一个批处理脚本,在我的networking上为我触发vlc,问题是它基于浏览器中的URL打开。 浏览器会自动添加%20来代替常规空间,在将文件path发送到vlc之前,我需要在批处理脚本中再次用常规空间replace它。 这是我的代码; @echo off set str=%1 set str=%str:~8% set str=%str:%%20= % START /D "C:\Program Files\VideoLAN\VLC\" vlc.exe %str% pause 值得一提的是,这将运行在Windows 7和/或Vista系统上。

在Windows批处理编程中读取文件名

我想在Windows批处理编程中读取文件的名称。 我正在尝试使用不同的方法,但失败请帮助。 情景已在下面给出。 我有一个文件夹中的不同文件,但文件名的长度是相同的所有文件。 例如 1000342578_30062011.PDF 1000342329_30062011.PDF 而我只是想将30062011 (例如30062011 )之前的部分保存在一个variables中。 下面只是尝试,但我无法通过。 @echo off echo.Date : %date% echo.Year : %date:~10,4% dir /s /b C:\Users\zeeshando\Desktop\*.txt for %%x in (c:\temp\*.xls) do echo %%x lfnfor off for %%x in (*.*) do echo %%x > filelist.txt PAUSE for %i in (C:\Users\zeeshando\Desktop) do echo %~ni PAUSE UPDATE 我现在的代码,基于@Alex K.的回答: @setlocal enabledelayedexpansion […]