草庐IT

windows - 批处理脚本使其他批处理文件访问的setlocal变量

我正在编写一个批处理文件以从文件中读取路径并将其设置为环境变量。许多其他批处理文件将使用(调用)此批处理文件来获取变量。在编写批处理文件时,我遇到了变量扩展的问题,因此我使用SETLOCALENABLEDELAYEDEXPANSION来解决这个问题。但是这样做其他正在使用它的批处理文件无法设置变量。下面是批处理脚本,getVariables.bat@echooffSETLOCALENABLEDELAYEDEXPANSIONifEXIST"test.dat"(for/F"tokens=*"%%Iin(test.dat)doset%%IechosettingJAVA_HOMEto::!JA

windows - 使用批处理脚本在 Windows 中添加注册表项,并在数据中添加引号

这里是小威利斯。我正在尝试使用批处理脚本来编辑双击.jar文件时使用的现有注册表项。问题是我尝试输入的数据包含引号,但我还需要引号才能将其视为字符串。例子:regadd"HKEY_LOCAL_MACHINE\Software\Classes\jarfile\shell\open\command"/v""/tREG_EXPAND_SZ/d"C:\ProgramFiles\Java\jre7\bin\javaw.exe"-jar"%1"%*/f当我在批处理脚本中运行它时,cmd窗口会打印出“错误:命令行参数过多”所以为了让这变得简单。我想添加一个带有"C:\ProgramFiles\Jav

windows - 将批处理 stderr 重定向到文件

我有一个执行Java应用程序的批处理文件。我正在尝试修改它,以便每当发生异常时,它都会将STDERR写入文件。看起来像这样:startjavasomething.jarmethod%1%22>>log.txt有没有办法将参数%1和%2也写入log.txt文件?我不想每次调用这个批处理文件时都将它写入日志文件,只有在发生异常时才写入。我尝试寻找一种将STDERR重定向到变量的方法,但我无法弄清楚。理想情况下,我希望日志文件看起来像这样:Batchfilecalledwithparameters:-"firstarg"-"secondarg"Exception:java.io.except

windows - 将 powershell 命令的输出保存在变量中并在批处理脚本中使用它?

我想做的是保存powershell命令的输出(从批处理脚本运行)并在批处理脚本中使用它。你能告诉我该怎么做吗?PowerShell命令是:[System.Net.Dns]::GetHostByName((hostname)).HostName我想在批处理脚本中使用输出。附言如果我可以从cmd而不是从powershell获取完整的计算机名/主机名/完全限定域名(FQDN),那就更好了。但完整的计算机名称不是ComputerName和UserDNSDomain变量的串联。 最佳答案 for/f"tokens=*"%%iin('power

windows - 如何使用 Windows 批处理脚本将空 ASCII 字符 (nul) 写入文件?

我试图从Windows批处理脚本中将ASCII空字符(nul)写入文件,但没有成功。我最初尝试使用echo像这样:echo这似乎应该有效(在命令窗口中键入确实会写入一个空字符-或显示为^@),但是echo然后输出:More?然后挂起直到我按下.作为替代方案,我尝试使用:copycontmp.txt>nul这正是我需要的,但前提是我在命令窗口中手动输入它。如果我从批处理文件运行它,它会挂起,直到我按但即便如此,输出文件已创建但仍为空。我真的希望批处理文件独立,而不需要(例如)一个单独的文件,其中包含一个可以在需要时复制的空字符。 最佳答案

windows - HTML 输入类型 ="password"的 Windows 批处理等效项是什么?

我需要在Windows脚本中从用户处获取身份验证凭据,但经典的“第一个Google结果”方法:SET/PUSR=Username:SET/PPWD=Password:不太令人满意,所以我想知道是否有一个“等同于”HTML的输入类型="密码"?如有任何意见,我们将不胜感激,在此先致谢! 最佳答案 看看这个http://www.netikka.net/tsneti/info/tscmd052.htm@echooff&setlocalenableextensions::BuildaVisualBasicScriptsetvbs_=%tem

windows - 批处理脚本中是否有一种方法可以仅在从 Windows 管理器调用时保持控制台打开?

我有一个DOS批处理脚本,它调用一个java应用程序,该应用程序通过控制台UI与用户交互。为了便于讨论,我们称它为runapp.bat,其内容为javacom.example.myApp如果在控制台中调用批处理脚本,一切正常。但是,如果脚本是从窗口管理器调用的,则新打开的控制台会在应用程序完成执行后立即关闭。我想要的是控制台在所有情况下都保持打开状态。我知道以下技巧:在脚本末尾添加一个pause命令。如果从命令行调用runapp.bat,这有点难看。createanewshellusingcmd/Kjavacom.example.myApp这是迄今为止我找到的最佳解决方案,但在从命令行

Windows批处理脚本删除文件夹中除一个以外的所有内容

我有一个脚本可以删除文件夹中的所有子文件夹和文件:FOR/D%%iIN("D:\myfolder\*")DORD/S/Q"%%i"&DEL/Q"D:\myfolder\*.*"而且效果很好!唯一的问题是我想排除一个或多个文件夹,例如XCOPY排除功能。我只是不知道如何将它添加到脚本中。 最佳答案 您可以尝试在for循环之前隐藏文件夹,然后再取消隐藏它们,如下所示:ATTRIB+HD:\myfolder\keepitFOR/D%%iIN("D:\myfolder\*")DORD/S/Q"%%i"DEL/Q"D:\myfolder\*.

windows - 此时 %x 出乎意料。批处理脚本

@echoofffor/f"tokens=1,2delims=,"%%xin(my.csv)do(if%M%LSS%%xsetM=%%x)echoMaxXValue=%M%有时它工作正常,有时它会失败并出现以下错误:%xwasunexpectedatthistime. 最佳答案 问题是您在for循环中使用了%m%。这是在读取循环时评估的(在所有迭代之前)。换句话说,整个循环,直到并包括右括号,在执行之前被读取和评估。所以%m%将始终是它的初始值,无论您在循环中实际将其设置为什么。一个例子应该可以说明这一点:setval=7for%%

Windows批处理命令 move 目录中的所有文件夹,但有异常(exception)

我正在尝试编写一个Windows批处理文件,它允许我将给定源目录中的所有目录move到该源目录中存在的目标目录中。很明显,我的move命令只需要应用于目录并且还排除目标目录不被处理。这可以通过Windows批处理命令实现吗? 最佳答案 Robocopy(存在于最新版本的windows中或可从WRK下载)可以做到这一点,只需使用/xd开关从副本中排除目标目录;robocopyc:\source\c:\source\target\*.*/E/XDc:\source\target\/move