Articles of batch file

将多个子文件夹中的所有文件移动到父文件夹中

我在https://superuser.com/questions/999922/move-all-files-from-multiple-subfolders-into-the-parent-folderfind了一个很好的脚本 主要的问题是我需要一个脚本,它适用于每个子文件夹,并将所有文件从Flacroot目录中移动到上面的文件夹作为初始点。 例如Album1 – > Re-Encode,关于重新编码的所有内容都应该被移到Album1,并且对于每个Album目录。 @echo off FOR /R "C:\Source Folder" %%i IN (*.png) DO MOVE "%i" "C:\Staging Folder" 此脚本不能为每个子文件夹。 有人有一个想法如何可以解决? 从: |Flacroot | |Album1 | | |Re-Encode | | | |*.* |Flacroot | |Album2 | | |Re-Encode | | | |*.* |Flacroot | |Album3 | | |Re-Encode | | | |*.* 至: |Flacroot […]

在受限的(Citrix)环境中从Java调用Java的.bat文件

我不太熟悉的Windows桌面编程,我想弄清楚如何处理来自Java的调用.bat文件。 我正在尝试使用Maven运行的桌面Java程序作为jar文件在Citrix虚拟化环境中执行bash脚本。 原来最初的问题是UNCpath导致batch file不被发现,但我已经修改了path,现在我能够findbatch file,但在Citrix帐户中禁用了cmd.exe。我正在使用,而且我担心我无能为力。 这是如何工作的: 1)用户通过program.jar文件启动程序用户检查更新 2)如果find更新,则下载一个名为program_update.jar的新jar文件,并将名为run_update.bat的batch file复制到主程序目录。 3)在Java程序中,调用以下命令: Runtime.getRuntime().exec("cmd /c pushd " + FileName.installation + " && start run_update.bat && popd"); 其中FileName.installation是之前已设置的指示主目录安装目录的属性。 run_update.bat运行一个循环,尝试用program_update.jarreplaceprogram.jar ,并在命令提示符中显示成功/失败消息。 当我在Citrix环境中运行时,我收到以下消息: 'run_update.bat' is not recognized as an internal or external command, operable program, or batch file. The command prompt has been disabled by your administrator. 此时,我可以点击run_update.bat并成功运行该操作。 通过program.jar调用的自动更新在可以访问cmd的正常Windows环境中工作。 我的问题 我的java调用运行cmd […]

如何从batch file运行一个充当cmd实例的subprocess的python脚本?

我正在尝试使用batch file来运行python脚本,以便批处理会话结束时(例如终止)python脚本也将closures。 例如,如果我想做相反的事情(Python->批处理)。 我会使用subprocess模块。 我怎样才能做到这一点? 这是batch file中的相关行: python run.py %* 其中运行python脚本,但终止它,python脚本继续运行

批量重命名多个文件

你好人我有这个代码在.batch中: @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET "sourcedir=C:\Users\leandro.batista\Desktop\reni" FOR /f "delims=" %%a IN ('dir /b /ad "%sourcedir%\*.pdf" ') DO ( SET "csvname=%%~na" IF NOT "!csvname:*_=!"=="!csvname!" ( CALL :finddate REN *.pdf !csvname!.pdf PAUSE ) ) GOTO :EOF :finddate IF /i "%csvname:~-13%"=="" SET "csvname=%csvname:~0,-13%" IF "%csvname:*_=%"=="%csvname%" SET "csvname=%csvname:~0,13%"&GOTO :EOF SET "csvname=%csvname:*_=%" GOTO finddate 所以是的,现在我将解释,我有:finddate提取文件名的一部分,然后我在for循环中使用它来重命名文件。 我正在做的是重命名多个文件在同一个文件夹,但我有问题,它不重命名多个文件,它只是重命名我1文件,然后离开其他人说,一个同名的文件已经存在,所以我认为我的循环不工作,因为我想它的工作。 文件名的例子是这样的: AAA_BBB_CCC_DDD_01_M73N_(REC9ago2017) BLA […]

批量查找和replacestring添加空白行

我得到了这个代码(在这个问题中 ),它find并replace了string,但是它在输出文件的末尾添加了一个空白的新行,并使其不可用。 @echo off &setlocal set "Russian=g_language = Russian" set "English=g_language = English" set "textfile=user.cfg" set "newfile=user.bak" Call :SwapLang Russian :search Color 9B @echo off&prompt :&mode con cols=60 lines=16 echo. echo. echo. echo. echo. echo. echo. echo PLEASE RUN NOTEPAD echo. echo. echo. echo. echo. :search TIMEOUT /T 2 TASKLIST|FIND "notepad.exe" IF %ERRORLEVEL% equ 0 […]

我可以在一组Azure服务器上运行.bat文件吗?

我创build了一个执行sql查询的.bat文件。 .bat文件的内容如下所示: sqlcmd -S ServerLocation -E -i "U:\DriveLocation\Sample.sql" -o "U:\DriveLocation\Sample_log.csv" 我在使用60个Azure服务器的AXIS处理网格上运行模型。 当我尝试使用Azure /云处理器来运行这个.bat文件时,没有任何反应,但是当我在本地机器上运行它时,这个文件就起作用了。 是否有可能在一组Azure服务器上运行.bat文件,还是有一些我需要包含的代码才能起作用? 在此先感谢您的帮助!

当在FOR循环中运行“adb pull ”时,Windows cmd会加扰

我试图创build一个batch file,使用adb pull从我的Android手机中提取所有的摄像头video。 set source=/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video set destination=S:\Archive\Autoboy\original for /f "usebackq" %%f in (`adb shell ls %source%`) do ( echo.adb pull %source%/%%f ) 这个脚本可以工作 ,因为这会创build下面的输出(出于debugging目的回显): adb pull /mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video/2017_08_28_08_33_53.mp4 adb pull /mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video/2017_08_28_18_35_14.mp4 […] 但是,当我尝试将目标定义到adb pull命令时,它不起作用 。 set source=/mnt/m_external_sd/Android/data/com.happyconz.blackbox/files/autoboy/autoboy_video set destination=S:\Archive\Autoboy\original for /f "usebackq" %%f in (`adb shell ls %source%`) do ( echo.adb pull %source%/%%f %destination%\%%f ) 这一个给出了以下输出: […]

如何在命令失败时从批处理脚本中的命令输出中捕获错误?

我有一个Jenkins的工作与多个版本。 有些步骤是批处理和一些Powershell,大部分是批处理。 在各个步骤中,我运行一些msbuild命令,常规命令如robocopy , zip …,一些.bat , .ps1脚本和一些.exe的文件。 我想捕获失败时的错误并将它们保存到文件中。 我希望每一个构build步骤都得到执行,而不pipe它们的失败。 jenkins的工作应该是成功的。 为此,我强制退出每个构build步骤。 在此之前,我正在尝试捕获文件的错误。 有了powershell,使用-errorvariable选项或try{}catch{}块更容易。 但是在批处理中,我面临着很多从命令输出中捕获错误的麻烦,特别是对于一些只有在命令失败时才执行的命令和脚本。 任何帮助将不胜感激。

Windows批处理 – 尝试合并所有子目录中具有相同名称的文本文件时的空文件

我已经find了一个不同的主题, 如何从所有子目录合并具有相同名称的文本文件? ,以下代码将文件与批次合并: @echo off for /r "." %%a in (*.txt) do ( echo %%~na type %%a >> %%~na-merged.txt ) 在我的本地电脑这工作正常。 但是,当我在一个VDI中使用的Windows服务器上尝试这个时,新文件被创build为空。 你可以在下面find来自cmd的信息: “ááá”不被识别为内部或外部命令,可操作程序或batch file。 “áááecho”不被识别为内部或外部命令,可操作程序或batch file。 “ááá”不被识别为内部或外部命令,可操作程序或batch file。 访问被拒绝。 处理时发生错误:D:…系统找不到指定的文件。 处理时发生错误: – 。 该系统找不到指定的path。 按任意键继续 。 。 。 谁能帮忙?

如何在for循环内dynamic引用数组? 批量

好的,所以我的最终目标是遍历一个文本文件,并且对于文本文件中的每一行,使用该行作为数组中的键来存储值为1。 然后,遍历目录中的文件,并查看在这个迭代中当前文件名的上述数组中是否有值。 我的代码如下 @echo off setlocal enabledelayedexpansion set filesRan[0]=1 set i=0 for /f "tokens=*" %%a in (input.txt) do ( set /A i+=1 set filesRan[%%a]=1 ) set patchesRan[0]=1 for %%f in ("C:\Users\kkennedy\Source\Repos\GeneSeek-DataHub\dbScripts\DDL\Patches\*") do ( echo %%f echo %%~nf set thisFileName=%%~nf echo triple x !thisFileName! echo triple x !filesRan[%%thisFileName]! IF "!filesRan[%%thisFileName]!" EQU "1" ( ECHO already ran […]