Articles of batch file

从Windows批处理脚本中的文件读取值

我试图从文件中读取一个值,并在后续的命令中使用它。 我有一个名为AppServer.pid的文件,其中包含我的应用程序服务器的进程ID(只是数字,它不是一个属性文件或类似的东西)。 应用程序服务器挂起,所以我想要取这个值,并将其传递给kill命令。 所以我的脚本会是这样的 SET VALUE_FROM_FILE=AppServer.pid # or something taskkill /pid %VALUE_FROM_FILE% /f 有没有一个方便的方法来做到这一点在Windows脚本?

批处理脚本查找挂载设备的驱动器号

我正在尝试编写批处理脚本来查找特定的挂载设备。 我在Windows 7中。 我知道该设备将有文件夹驱动器:\习惯所以我想看看所有possabilitiesfind一个设备与这条path 这是我到目前为止 @echo off setLocal Enabledelayedexpansion for %%d in (cdefghijklmnopqrstuvw xyz) do ( if exist %%d:\custom ( ECHO Device Found : %%d ) ) 这不工作,它认为它存在每个驱动器号..所以我看到“设备find”每个单个驱动器号。 这是为什么? 我是否在谈论这个错误? 如何find根目录上具有“自定义”文件夹的驱动器号? 谢谢, 斯蒂芬妮

使用Windowsbatch file从FTP服务器下载今天的文件

我正尝试将XML文件从FTP位置复制到应用程序服务器 – 但不是所有文件。 新文件在ftp位置每隔半小时存档一次。 我只需要传输基于时间戳和date的新文件。 我正在使用下面的2个文件从FTP位置复制所有文件。 batch file: ftp -i -s:D:\ftp_commands.txt -n <host name> 文本文件(ftp_commands.txt): user <username> <password> cd <source path> lcd <destination path> mget * bye 任何人都可以请帮我复制基于时间戳或date的文件?

批处理脚本调用可执行文件,如果挂起则退出

因此,我需要编写一个批处理脚本来启动一个可执行文件,并在可执行文件完成后立即退出脚本(所以不需要ip ping等待脚本),但是如果可执行文件仍在运行,会在30分钟后自动终止该脚本并退出脚本挂起,没有回应等) 这是我迄今为止。 find语句正确地输出匹配的进程数,但是我的问题是ERRORLEVEL总是返回0,无论是否有正在运行的匹配的可执行文件。 我对批处理脚本相当陌生,所以很可能我忽略了一些非常简单的事情。 @echo off start calc.exe REM loop 600 times, each loop being 3 seconds (30 minutes total) FOR /L %%A IN (1,1,600) DO ( REM find the running executable tasklist | find /I /C "calc.exe" > nul echo %ERRORLEVEL% Rem exit the script if no executable is found (ie it has […]

如何安全地回应文字string“%I”?

如何以安全的方式回显string%I ,而不pipeecho命令行是否放在for %I循环中? 例如,在命令提示符( cmd )中: >>> rem // `echo` is outside of `for` scope, so this works: >>> echo %I %I >>> rem // `echo` is inside of `for` scope, so `%I` is resolved: >>> for %I in (.) do @echo %I . >>> rem // escaping does not help, `%I` is still resolved: […]

Qt5:使用QProcess :: startDetached调用.bat文件在System32中找不到程序

我有一个小button的Qt GUI程序,启动一个.bat文件。 调用.bat的重要部分是这样的: void MainWindow::on_pushButton_clicked() { int r = QMessageBox::warning(this, tr("Shutdown System"), tr("Do you want to close the program and the system?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (r == QMessageBox::Yes){ QProcess::startDetached("cmd /C shutdown_all.bat"); } } 我打算打电话PSShutdown ,位于C:\Windows\System32\psshutdown.exe ,当然在PATH 。 我把它放在.bat文件中用于testing目的: cd C:\Windows\System32 psshutdown PAUSE 当单独调用.bat文件时,似乎find了有关它的程序和打印信息,但是当我使用该button调用程序时,找不到psshutdown.exe 捕获结果: 用Qt程序调用.bat: 双击调用.bat(预期结果): 在向.bat添加echo %PATH%时,path也似乎在两个版本中均打印成功。 任何想法可能是错的? 这已经在两个不同的计算机上用Qt […]

运行cmd命令工作,但从batch file运行不

我尝试使用for循环将文件移动到子文件夹创build脚本。 一开始,我使用CMD然后将命令复制到.bat文件并运行。 结果是什么都没有发生。 为什么在CMD上的相同的命令工作,但从文件不运行? 这是我的命令。 @echo off setlocal enableDelayedExpansion SET FOL=J:\test SET ENDNUM=2 for /l %x in (1, 1, %ENDNUM%) do ( md "%FOL%/0%x/subfolder" move /Y "%FOL%\0%x\*" "%FOL%\0%x\subfolder" )

批处理脚本告诉我什么时候是最后一次访问文件

我有一个文件夹中的销售订单列表。 我想要一个批处理脚本,可以输出到一个txt文件,当所有的文件最后访问,但不一定修改。

文件重写:一行大于variables的最大大小。 解决方法?

我需要replace文件中的单行。 通常,这段代码工作正常: (关于这个块的实际细节并不是这个问题所必需的)。 for /F "tokens=1* delims=:" %%a in ('findstr /N "^" %DATA%') do ( if %%a equ %TargetLine% ( echo !insert!>>%filepath%cc.tmp ) else ( if [%%b]==[] (echo.>>%filepath%cc.tmp) else (echo %%b>>%filepath%cc.tmp) ) ) 不幸的是,每一行都被赋值为%% a,与其他variables一样,最大长度只能保存8,192个字符(感谢dbenham对这个tidbid的使用,现在正在使用)。 那么当行数大于8,192个字符(在这种情况下为23,708)时,我有什么select? 在你问:不,它不能被分隔到一个新的行,它是一个10K的JSON数组编码在Base64,然后写入一个ByteArray。 我假设要走的路是使用正则expression式,这是正确的假设,还是有另一种解决方法? 谢谢。

批处理脚本中不能从%%值设置variables

基于这个答案,我试图将%%a和%%b值保存到variables,但它不起作用: @ECHO OFF SETLOCAL set "path_of_folder=C:\folderA\folderB" if exist "%path_of_folder%" ( echo Path exists. for /f "skip=5 tokens=1,2,4 delims= " %%a in ( 'dir /ad /tc "%path_of_folder%\."') do IF "%%c"=="." ( set "dt=%%a" echo Created on: %%a, %%b set "vara=%%a" set "varb=%%b" echo %vara%, %varb% REM substring set day=%vara:~0,2% ) ) else ( echo Path does […]