Articles of batch file

在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 […]

使用批处理(.bat)文件自动执行adb shell命令

我经常授予读/写/执行(chmod 777)权限到Android手机中的不同系统文件(rooted手机)。 有时我把chmod 777命令添加到启动脚本中,只是为了节省时间。 在Samsung Galaxy S6手机上,我正在更新文件(脚本):'/etc/init.sec.boot.sh',在文件末尾添加以下命令。 chmod 777 <filename> 这使用以下命令在adbshell内工作正常 su echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh 现在,如果我尝试使用.bat文件相同,它会给我权限错误。 我正在使用以下命令 adb shell su -c "echo \"chmod 777 <filename>\" >> /etc/init.sec.boot.sh" 由于这个命令不工作,我复制了文件到SD卡,修改它,然后用修改后的版本replace原始文件。 如果我现在读取文件的内容,它正确地读取我想要的内容,但是chmod命令从不执行。 我几次重新启动电话,但文件许可完全没有影响。 在这一点上,如果我运行相同的命令从壳内,如果工作。 su echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh 此时,init.sec.boot.sh文件中的最后两行是这样读取的。 chmod 777 <filename> chmod 777 <filename> 最后两行似乎完全一样。 chmod命令只能在shell内写入。 我能想到的唯一合理的解释是,Windows命令提示符和Android linux shell可能会使用不同的文本编码。 如何从.bat文件(甚至直接从命令提示符)成功执行chmod命令。 PS:我重新安装/系统读取/写入。

Windows批处理:(robo)复制命令的Unicode参数

我需要在一个batch file中复制多个文件。 这些文件具有映射到不同代码页的Unicode名称。 例: set ArabicFile=ڊڌڵڲڛشس set CyrillicFile=щЖЛдЉи set GermanFile=Bücher copy %ArabicFile% SomePlaceElse copy %CyrillicFile% SomePlaceElse copy %GermanFile% SomePlaceElse 问题:batch file不能是Unicode。 问题:如何将Unicode文件名写入batch file,以便复制命令识别它们? 笔记: 我不在乎如何显示文件名称。 其实batch file不仅仅是复制这些文件,我只是简化了描述,使问题更清晰。 正确的batch file: 用Arnout的答案我修改我的batch file如下。 现在它可以正常工作,而不需要更改字体(如Arnout所评论的那样,这会很麻烦)。 @echo off chcp 65001 set ArabicFolder=ڊڌڵڲڛشس set CyrillicFolder=щЖЛдЉи set GermanFolder=Bücher robocopy /ed:\temp\test\%ArabicFolder% d:\temp\test2\%ArabicFolder% /log:copy.log robocopy /ed:\temp\test\%CyrillicFolder% d:\temp\test2\%CyrillicFolder% /log+:copy.log robocopy /ed:\temp\test\%GermanFolder% d:\temp\test2\%GermanFolder% /log+:copy.log

将parameter passing给BAT文件并通过双击运行

我想传递两个文件path(对于Windows)作为命令行参数的脚本。 在Windows中,如果我们右键单击一个文件,我们可以看到属性选项,在常规选项卡下显示文件名如test.bat。 我们可以从那里传递参数吗? 其实我想要的是通过前面说过的两个参数来捕捉那些从脚本中相应的操作。 bat文件应该双击执行。 可能吗? 我search谷歌,但没有发现(可能是我不知道适当的search查询)。

在最后一个参数中的正斜杠导致批文件(“%〜dp0”)目录的path改变

我正在学习如何处理批处理脚本中的参数,并最终创build了一些用于读取参数和设置参数的模板 @echo off SetLocal EnableDelayedExpansion set needextra= set errstat= set noflag= set param_f=Not set yet set param_g=You didn't use G-flag :readARGS IF [%1] == [] goto :endARGS call :arg_%1 2> nul IF ERRORLEVEL 1 call :arg_default %1 SHIFT IF DEFINED needextra ( set %needextra%=%~1 SHIFT set needextra= ) goto :readARGS :endARGS echo path to directory […]

Windows批量curl到variables

我在Windows中的批处理脚本知识很差,我需要一些帮助。 我正在尝试创build一个dynamic脚本,用于从不同的EC2实例启动selenium服务器。 我想要做的是在启动服务器时自动运行下面的脚本: cd C:\curl-7.47.1-win64-mingw\bin %comspec% /c curl http://ipecho.net/plain > %HOMEPATH%\desktop\MyIP.txt set /P IP= < %HOMEPATH%\desktop\MyIP.txt cd C:\Selenium\ java -jar selenium-server-standalone-2.52.0.jar -role node -host %IP% -hub http://*******************/grid/register –nodeTimeout 1200 maxSession 4 -browser browserName=chrome,maxInstances=4,platform=WINDOWS, -Dwebdriver.chrome.driver=chromedriver.exe – browser browserName=firefox,maxInstances=4,platform=WINDOWS 当我通过RDPlogin服务器时,它工作。 但是当它由EC2自动启动时,%IP%variables是空的。 我不知道发生了什么。 也许我需要login? 现在我正在尝试另一个选项,我决定不使用“MyIP.txt”文件,并直接将curl传递给一个variables,并在selenium命令中使用它。 但我不知道该怎么做 有点像… cd C:\curl-7.47.1-win64-mingw\bin SET IP=curl http://ipecho.net/plain cd C:\Selenium\ java -jar selenium-server-standalone-2.52.0.jar -role […]

多个命令在一个batch file中的问题

我是新来的,所以要温柔:) 我试图编写补丁文件开始批处理,并将其转换为exe文件一旦完成。 我有两个batch file,当单独执行,但是当我join到batch file(join之一)的第二部分中的一个不是完成任务(不添加registry项)时,工作得很好。 可以请你看看波纹pipe批次,让我知道我犯了什么错误(请注意这是特定于应用程序) 谢谢你提前 错误第1部分是删除目录和移动文件但是2dn不创buildregistry项请帮助 comd /c @echo ofF xcopy /y C:\ProgramData\Jeppesen\Common\TerminalChartsTemp C:\ProgramData\Jeppesen\Common\TerminalCharts rmdir /s /q C:\ProgramData\Jeppesen\Common\TerminalCharts.0.0 rmdir /s /q C:\ProgramData\Jeppesen\Common\TerminalCharts.alt.0 rmdir /s /q C:\ProgramData\Jeppesen\Common\TerminalChartsTemp ; @echo ofF ; CLS ; REGEDIT.EXE /S "%~f0" ; EXIT [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Jeppesen\JeppView for Windows\Paths] "CommonHidden"="C:\\ProgramData\\Jeppesen\\Common\\" "C2E_config"="C:\\ProgramData\\Jeppesen\\Common\\C2E4\\Config\\" "C2E_data"="C:\\ProgramData\\Jeppesen\\Common\\C2E4\\Data1\\" "ShapeData"="C:\\ProgramData\\Jeppesen\\Common\\C2E4\\Cultural\\" "TerrainData"="C:\\ProgramData\\Jeppesen\\Common\\TerrainData\\" "Themes"="C:\\ProgramData\\Jeppesen\\JeppView for Windows\\Themes\\" "Logs"="C:\\Users\\Public\\Documents\\Jeppesen\\JeppView for Windows\\Logs\\" "Bitmaps"="C:\\Users\\Public\\Documents\\Jeppesen\\JeppView for […]

将文本文件的内容读入环境variables

其实我想把txt文件的内容传给if条件 我正在尝试以下 set /p var = < file name if not %var% == “string” goto x else goto y 但它不工作。 当我检查var的值时,它显示的variables不被拒绝 Set %var% 环境variables%var%未定义

loop&nslookup的批处理脚本

我之前看过这个问题,但没有解决我的问题。 我只是试图遍历包含主机名的文本文件。 当我从命令行尝试相同的命令(省略额外的百分号)时,它将工作一两次然后给出下面指出的错误。 将其作为batch file运行,batch file将不做任何事情而退出。 这一个真的难倒我。 以下是我的batch file中的代码: @echo off set OUTPUTFILE=Results/Results.txt set lookup=HostNames.txt FOR /F %%i in (%lookup%) do FOR /F "usebackq skip=3 delims=: tokens=2" %j in (`nslookup %i`) do @echo %%i %%j >> %OUTPUTFILE% 在一个命令行我得到: 我)在这个时候是意外的。 当我在命令行中运行它时,我将在batch file中运行时取出其他百分号。 我也在命令行中使用绝对path,以确保这不是我设置的环境variables的问题。

batch file复制目录,如果它具有比目标目录更新的date

我们有一个文件共享,其目录包含我们所有的构build版本direcotries这样命名 WebApp_20140702.1第一个数字是date第二个数字是该date的构build计数 这些包含在以下目录中 \\server\share\product\ 我需要从虚拟机上做的是创build一个batch file,可以检查我的虚拟机,即目标位置。 c:\product\通过比较文件名或date查看它是否具有networking共享中的最新版本,然后复制新版本并在必要时删除旧版本。 到目前为止,我可以复制使用xcopy的文件夹,但这是关于我的DOS /batch file知识的程度iv有一个环顾一下,但一直没有能够看到我可以使用任何东西 这是我到目前为止,正如你可以看到,虽然我不知道如何做上述两个目录之间的比较。 xcopy "\\server\share\webapp" "c:\users\username\desktop\webapp" /E /K 我没有尝试在最后使用/D ,只是复制\\server\share\product\目录中的date比目标更晚的目录,但最终只是复制了整个目录。 编辑:让我自己清楚 我需要找出如果我有最新的子目录,但无论我做什么总是从\\server\share\product\ 即。 \\server\share\WebApp目录将包含以下子目录 ..\WebApp_20140628.1\ ..\WebApp_20140628.2\ ..\WebApp_20140703.1\ 我的虚拟机将有该目录 c:\product\WebApp_20140628.2\ 现在我需要能够进入文件共享,看到它有一个更新的子目录,我需要将该目录复制到我的虚拟机,然后从我的虚拟机删除旧的,所以我会然后有 c:\product\WebApp_20140703.1\