Articles of batch file

文件重写:一行大于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 […]

如何使用batfch文件login到路由器,然后向路由器发送命令

我试图写一个batch file来打开一个telnet会话,连接到路由器,input用户名和密码,最后发送一个命令到路由器,我有两个不同的路由器,我正在试图与此。 其中之一是一个NETGEAR我可以成功地在路由器上解锁telnet(它是默认locking,一旦解锁,重新启动后恢复)打开telnet会话,并连接到router.to解锁telnet我有一个程序telnetenable.exe它存储在C:/ echo off echo c:/telnetenable.exe ipaddress username password telnet ipaddress 但不能发送一个命令到路由器一次,在这一点上,我有一个开放的连接到路由器,可以手动inputcmd adslctl configure –snr x,但我想把它合并到batch file。 在第二个路由器Speedstream 4200 Telnet没有被locking,我可以打开Telnet会话并连接到路由器,但不能input用户名或密码后,我想能够发送一个CMD。 echo off telnet ipaddress 让我尽可能的用户名请求。 任何人都可以帮助我解决这些问题。 非常感谢。

运行时最小化batch file和Firefox

我试图创build一个batch file,将由Windows任务调度程序计划。这里是我的代码 start /min test.bat "C:\Program Files\Mozilla Firefox\firefox.exe" -tray TASKKILL /F /IM cmd.exe 然而,在task scheduller中运行这个错误会导致一个无法运行的错误,这是不合理的。我的目标是运行firefox,最小化cmd。 使用这个代码与任务调度程序的作品 "C:\Program Files\Mozilla Firefox\firefox.exe" -tray TASKKILL /F /IM cmd.exe 好,但是Firefox和cmd不是最小化的。我做错了什么?是不是有一个周长呢?

在batch file中读取标准inputstream

是否可以在batch file中使用pipe道标准inputstream? 我希望能够将一个命令的输出redirect到我的batch fileprocess.bat列表中,如下所示: C:\>someOtherProgram.exe | process.bat 我的第一次尝试看起来像: echo OFF setlocal :again set /p inputLine="" echo.%inputLine% if not (%inputLine%)==() goto again endlocal :End 当我testing它与type testFile.txt | process.bat type testFile.txt | process.bat重复打印第一行。 有另一种方法吗?

将一个windowsbatch filevariables设置为星期几

我有一个每天运行的Windowsbatch file。 希望将数据logging到一个文件中并且想旋转它(即最多具有最后7天的数据)。 DELIMS DATE和DELIMS命令 – 找不到解决scheme。 有没有一个简单的解决scheme来创build一个文件名,其中包含星期几,即0星期一等 或者我不得不诉诸一些更好的shell脚本。

如何在Windows中使用批处理脚本获取最新的文件

我有一个date和时间附加的zip文件列表,如yyyymmdd_hhmmss_Demos.zip 。 现在如何获取源代码目录中最近添加的zip文件。 我需要复制这个文件在目标使用copy命令。 我发现了一些有关forfiles的信息,但是对于如何在几秒钟内完成这些信息却一无所知。

Windows批处理脚本来备份本地MySQL数据库,只保留N个最新的文件夹备份文件

我正在使用adityasatrio的batch file来备份本地MySQL数据库,并希望能够只保留30个最新的备份文件。 使用root:这个例子的根。 @echo off set dbUser=root set dbPassword=root set backupDir="D:\MySQLDumps\dbs\" set mysqldump="C:\wamp\bin\mysql\mysql5.6.17\bin\mysqldump.exe" set mysqlDataDir="C:\wamp\bin\mysql\mysql5.6.17\data" set zip="C:\Program Files\7-Zip\7z.exe" :: get date for /F "tokens=2-4 delims=/ " %%i in ('date /t') do ( set yy=%%i set mon=%%j set dd=%%k ) :: get time for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') […]

在批次的input参数中将“双引号”转义

我想在批处理脚本中运行以下参数(path) runas /user:abc "icacls %1 /grant Everyone:(F) /T" 但是参数%1已经包含了一个" (因为它是一个path,通过上下文菜单的Send To传递 – 我没有太多的控制权)所以当命令在批处理脚本中运行时,它的运行方式如下: runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T" 所以很显然,我需要逃避由%1创build的"我如何执行string操作超过%1 ,以便它逃脱引号?

使用batch file查找文件并返回完整path

是否有可能创build一个batch file,search文件名,然后返回它的path,所以我可以在一个variables中使用它?