Articles of batch file

ShellExecute:动词“runas”不适用于path中有空格的batch file

我正在使用ShellExecuteW来启动一个batch file。 代码看起来有点像这样: ShellExecuteW(GetDesktopWindow(), wide_verb.c_str(), wide_filename.c_str(), wide_parameters.c_str(), NULL, SW_SHOW); wide_variables的types是wstring 。 此代码适用于文件path和动词的任意组合,除了动词“runas”(获取pipe理员权限)以及在给定pathwide_filename包含空格的batch file。 popupUAC提示符,确认后一会儿,命令提示符就会闪烁,表示找不到path,在path的第一个空格处切断。 我已经尝试用额外的引号包装文件名,但是没有帮助。 原因可能是.bat文件不是真正的“可执行文件”,而是文件,因此 ShellExecuteW(GetDesktopWindow(), L"runas", L"C:\\Path To\\file.bat", L"Parameters For Batch", NULL, SW_SHOW); 内部映射到高级执行 cmd.exe /C "C:\Path To\file.bat" "Parameters for Batch" 而应该是沿着这条路线的东西 cmd.exe /S /C " "C:\Path To\file.bat" Parameters for Batch " 事实上,如果我执行这样的事情: ShellExecuteW(GetDesktopWindow(), L"runas", L"cmd.exe", L"/S /C \" \"C:\\Path To\\file.bat\" Parameters For […]

如何在Windows中的bat脚本中将输出导入到txt文件中

在Linux中,让我说我想启动tomcat,并希望将所有的控制台日志到一个文本文件,我可以写一个bash脚本: ./startup.sh> output.txt 但在Windows中,我们可以使用.bat脚本来做类似的东西。 我怎么能写这个蝙蝠脚本? (我知道正确的方式应该问应用程序做日志,但应用程序不是我写的,他们使用system.out.print打印日志,所有的日志都在控制台,但我想归档日志,万一发生什么事我可以回溯)

使用批处理脚本recursion复制文件而不使用Xcopy

我需要使用批处理(DOS)脚本recursion复制一组文件,保持原来的目录结构。 听起来很简单,对吧? 这是复杂的: xcopy在服务器上不可用我将使用批处理脚本。 因此,我必须使用复制命令。 一个彻底的互联网search这个主题只会导致使用xcopy或脚本的一些专门用途(这只是一个通用的复制/粘贴作业)。 我从90年代起就没有在DOS下写过。 我如何获得复制命令保存到一个新的目录与旧的相同的名称/位置?

Windows与其他系统批量区分

我正在写一个批处理脚本,其中我应该区分Windows和非Windows系统(Linux,MAC OS,交换机,施乐机器等)。 algorithm: if (it is a Windows System) then do this end if 为了做到这一点,我正在尝试借助nbtstat命令。 据我所知,当执行nbtstat -A [IP Address] ,如果[IP Address]是Windows系统,则会显示如下输出: >nbtstat -A 172.22.73.15 Local Area Connection: Node IpAddress: [172.22.73.15] Scope Id: [] NetBIOS Remote Machine Name Table Name Type Status ——————————————— MANDAR-PC <00> UNIQUE Registered DOMAIN <00> GROUP Registered MANDAR-PC <20> UNIQUE Registered DOMAIN […]

如何禁止“打开”窗口

当从命令行或batch file运行一个具有未知扩展名的文件(可以说是test.nope )时 – 使用test.nope , call test.nope或者start test.nope – 会出现一个窗口,要求你"Choose the program you want to use to open this file" (在Windows 7中,大概是在大多数Windows操作系统中)。 是否可以压制这个窗口? 我最初的想法是在尝试打开文件之前检查扩展名是否存在于%PATHEXT%variables中。 但是,这并不包含所有已知的文件扩展名。 例如,虽然.py扩展名不在我的%PATHEXT%variables中,但Python脚本仍能正确打开。

确定是否在widows批处理脚本中不能执行java

我写了下面的批处理脚本,如果它没有出现在环境中,它会要求一个JAVA_HOMEpath,然后validationjava版本。 但在识别java版本之前,还应该检查java是否存在于path中(可以执行)。 请帮我弄清楚是否可以执行java -version并显示正确的消息 @echo off setlocal set VERSION5="1.5" IF "%JAVA_HOME%" == "" ( echo Enter path to JAVA_HOME: set /p JAVA_HOME= goto check_java_version ) ELSE ( echo Using %JAVA_HOME% goto check_java_version ) :check_java_version for /f "tokens=3" %%g in ('%JAVA_HOME%\jre\bin\java -version 2^>^&1 ^| findstr /i "version"') do ( set JAVAVER=%%g ) set JAVAVER=%JAVAVER:"=% set JAVAVER=%JAVAVER:java […]

Windows批处理脚本读取.ini文件

我正在尝试使用以下格式读取.ini文件: [SectionName] total=4 [AnotherSectionName] total=7 [OtherSectionName] total=12 基本上我想打印出.ini文件中的某些值,例如OtherSectionName下的总数,然后是OtherSectionName的总数。

curl不被识别为内部或外部命令,可操作程序或batch file

我已经安装了curl ,并将其设置为我的系统中的environment variable 。 但是,当运行curl命令时,给出错误'curl' is not recognized as an internal or external command, operable program or batch file. 我试着重新启动我的系统,但是HockeyApp 。我想这个上传我的应用程序到HockeyApp 。 请帮我。我正在使用Windows 8.1。

batch file来监视添加到下载文件夹

我需要一个batch file来监视添加到我的下载文件夹,但只有新的补充。 像这样的东西: :START NumOldFiles = GetNumberOfFilesOld Delay_30_Seconds NumNewFiles = GetNumberOfFilesNew if(NumFilesOld < NumFilesNew) run_another_batch_file_I_wrote goto START else goto START 我不想计算子文件夹,只是目录中的文件夹和文件。 我一直在看这个: dir "C:\folder" /b/a |find /v /c "::" 但我不知道如何存储这个值,并testing它为<或>。 也许有更好的方法来做到这一点,但我现在无法想象。 也许维护一个列表,如果新列表有一个新文件运行批处理脚本,用新列表replace旧列表,我真的不知道如何去做这件事。

如何在批处理脚本运行时获取当前的活动窗口?

我有一个批处理脚本,我想用热键来运行,这个脚本应该在活动窗口中做一些动作(例如,创build一组特定的文件夹,或小写文件夹内所有文件的名称)。 所以脚本需要在被调用时引用活动窗口。 我试图离开别名的“开始”字段为空,但回显%cd%总是打印“C:\ Windows \ System32”而不是当前的活动窗口。