Questions tagged «batch»

批处理是在没有用户干预的情况下执行一组命令或软件程序。批处理文件是一个文本文件,其中包含一系列此类命令或程序调用。请为此使用标签[batch-file]。

1
使用Path变量在bat文件中启动程序
我经常使用命令行应用程序。它的路径是在环境选项中定义的,所以在PATH变量中。当我手动启动控制台时,如果我输入程序名称,它就会启动。 例如,我键入theprogram -option1 -option2然后它与任何工作目录一起启动。(.exe路径由PATH环境解决)。 如果我在.bat文件中写入相同内容,Windows会弹出一个消息框,说它无法找到该程序。在.bat文件中有start theprogram -option1 -option2,但我收到错误消息。因此,似乎该PATH变量未在.bat/ .cmd文件中使用。 如何theprogram在.bat不指定完整路径的情况下从文件启动?Windows 7是否禁用/ files中的PATH变量?.bat.cmd

1
通过Windows 7调度程序运行批处理文件以重命名网络驱动器上的文件夹
我正在尝试做我认为非常简单的事情:拥有一个.bat重命名网络驱动器上的两个文件夹的文件。从提示符运行时脚本工作正常,但不是从调度程序运行。有什么想法吗? 设定 网络驱动器\\NAS\Backup映射为B: Backup应该重命名文件夹:Current和Previous \\ NAS \备份\当前 \\ NAS \备份\上一页 任务XML <?xml version="1.0" encoding="UTF-16"?> <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2013-12-12T16:01:26.5634611</Date> <Author>nivis-server\nivis</Author> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2013-12-12T00:00:05</StartBoundary> <Enabled>true</Enabled> <ScheduleByWeek> <DaysOfWeek> <Saturday /> </DaysOfWeek> <WeeksInterval>1</WeeksInterval> </ScheduleByWeek> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>nivis</UserId> <LogonType>Password</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> …


1
是否有自动运行cmd.exe的autoexit?
在Windows中,当您autorun在注册表项中创建一个值HKEY_CURRENT_USER\Software\Microsoft\Command Processor并将其设置为,例如echo Hello from autorun,调用cmd.exe将在调用时首先执行该行。 autoexit在关闭cmd.exe时是否有类似的值? 我曾尝试autoexit, autoclose, autoquit, exit, onexit, onquit和quit没有运气。 我想要实现的是cmd.exe通过将(虚构的)autoexit注册表值设置为退出时保存当前目录setx _LAST_DIR "%cd%",以便我可以在下次调用时使用cd "%_LAST_DIR%"或在输入框设置为的Command prompt Last Dir.lnk文件中调用它。Start in%_LAST_DIR% 我目前的解决方案是在一个批处理文件PATH,myexit.cmd: @setx _LAST_DIR "%CD%" @exit 如果我想保存目录,我必须记住调用而不是退出。

1
批量查找和复制文件列表中的文件
我有一个带数千张照片的驱动器。我已将所有内容复制到另一个驱动器中,在此驱动器中,我几个月来一直在缓慢地整理它们。我发现了大量损坏的文件,但发现在原始驱动器上它们没有损坏。 我想做的是拥有一个批处理文件,该文件将从文本文件中读取文件名,并在原始驱动器中搜索文件名,然后将其复制到指定的文件夹中。 由于原始驱动器未排序,因此可能有重复,因此我想将该文件名的所有副本都复制到新文件夹中。我有一个脚本可以执行此操作(请参见下文),但由于文件名太长,它似乎无法正常工作。例如,“ 2008-06-27 02.06.37.jpg” ...脚本将搜索“ 2008-06-27”而不是完整文件名。 有关如何解决此问题的任何想法? 到目前为止,这是我目前无法正常工作的工作: @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION cls set dest=F:\ERRORS\recovered for /f %%f in (F:\ERRORS\errorlist.txt) do ( set i=1 for /f "tokens=*" %%F IN ('dir /S /B /A:-D "%%f"') Do ( for %%N in ("%%F") Do ( set name=%%~NN set ext=%%~XN ) copy "%%F" …

1
无法将“ sqlcmd”识别为内部或外部命令
(我知道这并不是真的要在这里使用,但是我不能在Stack Exchange上询问questios) 我正在创建一个批处理文件,并且收到以下错误消息:'sqlcmd'无法识别为内部或外部命令,可操作程序或批处理文件。 我知道为什么我的代码是错误的,但是不知道如何解决。.我没有MYSQL,我没有使用Microsoft SQL Server 2005,我正在使用SQLyog,没有sqlcmd,所以我该怎么办将我的代码更改为? 这是我的代码: @echo off cls set /p SName=Server Name : set /p UName=User Name : root set /p Pwd=Password : set /p DbName=Database Name : test set /p choice=ARE YOU SURE TO EXECUTE SCRIPTS in %DbName% (y/n) ? if '%choice%'=='y' goto begin goto end …
2 batch  sql 

2
即使找不到字符串,为什么它是errorlevel 0?
如果我运行此代码: :loop (type "File" | findstr Idle) > nul 2>&1 timeout 1 if errorlevel 1 goto loop 然后,如果在文件中找不到字符串“Idle”,它将在“循环”处重新开始并继续这样做,直到找到“空闲”,此时它将在代码中进一步向下移动。这一切都很好,如果我的代码是结构化的,这将在代码的底部而不是顶部,那么事情就可以了,但我需要这是第一个命令(所以如果找到空闲,重复此循环,如果未找到空闲,则向下移动) 但是当我运行这段代码时: :loop (type "File" | findstr Idle) > nul 2>&1 timeout 1 if errorlevel 0 goto loop 无论是否可以找到字符串“Idle”,它总是在“循环”处重新开始。 如果找到字符串,我真的需要能够运行命令(而不是找不到字符串(我不打算在这里使用“goto”,我需要运行特定命令(如“goto”)时“找不到“空闲”,找不到另一组命令,所以我需要两个有效的错误级别,或者替代方案。 为什么这不起作用,还有其他方式让我这样做?
1 batch 

1
查找网络中的所有打印机或至少打印机IP
我目前正在开发一个项目,通过打印机从打印机获取信息 snmp protocol (名称,打印页数,碳粉水平......)。 当我有一个打印机IP地址时,它目前正在工作,但我必须在一个非常大的公司(这意味着一个巨大的网络)应用它,我需要一些我可以在网络中找到所有打印机的东西。 这应该在批处理脚本中基于Windows的系统上运行。 我知道我可以找到网络的所有IP arp -a 或者可以通过搜索所有IP来查找打印机。 但我有一个子网掩码 255.0.0.0 这意味着有1600万(16581375)IP我必须搜索,这是非常资源密集和耗时。 在Windows控制面板中有一个选项 add network or wireless printer 其中共享所有网络打印机的列表。 我找不到任何有关他们如何获得此列表或任何类型的源代码的信息。 有谁知道windows如何获得此列表? 或者有更好的方法来获取所有网络打印机的列表,而不是为打印机强制整个网络? 当bruteforcing是唯一的解决方案时,我需要一种更好的方法来检查IP是否属于打印机,因为发送了一个 snmp 命令任何IP都不是最好的方法。

3
批处理文件与params一起运行的正确方法是什么?
我有一个批处理文件。其中,我需要在一个带有参数的新窗口中启动自己的另一个副本。我试过这个命令 start "" "%~0" "Param" 但它说 '"Param"' is not recognized as an internal or external command, operable program or batch file. 并没有开始任何事情。我能让它发挥作用的唯一方法是 start %~0 Param ,但我想如果路径有空格会崩溃。所以 使用参数启动当前批处理文件的另一个实例的正确方法是什么?

3
禁用“Windows无法找到'[foo] .exe'”弹出窗口
我用的时候 start 在批处理脚本中命令启动程序,我希望程序以异步方式启动;这恰好就像我预期的那样,如果我启动的程序存在的话。 但是,如果我尝试 start 一个不存在的程序,Windows显示一个弹出窗口,告诉我它无法找到该文件,锁定批处理脚本的执行,直到我手动关闭弹出窗口。这很烦人。由于一些远程文件系统的恶作剧,我无法在运行之前可靠地保证二进制文件存在,并且我无法锁定二进制文件。在我的场景中,如果二进制文件不存在,则不是严重错误,我的脚本应该继续。 有没有办法防止这些弹出窗口首先被创建,或者可以用于异步执行应用程序的批处理/ cmd单行程序,如果失败则不会阻止脚本继续执行(我可以从CLI作为批处理脚本轻松使用)?

1
将多个文件夹及其子文件夹批量复制到合并文件夹中
我有一个文件夹 X:\Export 有几个文件夹: X:\Export +---Export1 | \--- 各种档案...... + --- Export2 | \ --- ...和子文件夹 + --- Export3 | \ --- 等等 \ --- 等(名称差异很大) 每个“导出”文件夹具有相同的子目录结构,但它们具有不同的文件(可能存在一些名称冲突)。我想复制所有的子文件夹和文件 X:\Export\Export1, X:\Export\Export2, X:\Export\Export3等等,到一个文件夹 X:\Export\merged,保持子目录结构。 我希望做的伪代码却无法正常工作: create new folder "merged" for (every folder X in a given directory Y (i.e., X:\Export) copy every file in …


1
如何使用批处理搜索特定文件
我想创建一个批处理并需要找到一个特定的文件,是否有可能找到它? 它必须是一个搜索所有驱动器的命令,直到找到该文件,我希望它可以供所有人使用。 例如,我想找到“FarCry4.exe”,我需要它对其他人来说是通用的,因为也许有些人没有像我这样在默认目录中安装Far Cry 4。 我试过了 findstr /x /c:"FarCry4" *.exe 但完成后它只是告诉我它无法打开然后自动关闭。 有可能吗? findstr 命令,或者用户是否必须与我的路径交换?
1 windows  batch 

1
如何从此IP列表中提取最终行?
我试图获取网络的外部IP地址,看它是否与其他PC在同一网络上,但我的脚本无法正常工作。我的主要问题是: 无论我做什么,我似乎无法从外部IP地址获取 nslookup myip.opendns.com resolver1.opendns.com 这是我有的: nslookup myip.opendns.com resolver1.opendns.com>IP set nu1m=0 Setlocal EnableDelayedExpansion for /F "tokens=*" %%A in (IP) do (set /a nu1m+=1 & if !num!==6 set ip=%%A) echo %ip% >Out.txt EndLocal 我试过更换 %ip% 同 !ip! 但无论我做什么,ip变量都是空的。知道我做错了什么吗?
1 dns  batch  ip  batch-file  cmd.exe 

1
批处理文件,用于使用ffmpeg对多个视频中的字幕进行硬编码
我的问题在顶部 : 引用动态文件名的正确方法是什么? ass 使用时过滤 -filter_complex 在 ffmpeg的 ? 故事和我的尝试 : 我有一个包含宽屏的文件夹(16:9) .mp4 文件,1920x1080帧大小。对于每个mp4文件,我也有一个 .ass 带有命名模式的字幕文件 originalfilename_outline.ass。最后,有一个透明的 .png 作为视频的水印。 我的终极目标是mpeg2 PAL DVD .mpg 将输入文件重新调整为576px高度的文件,并在左右两侧均匀裁剪为尺寸为720x576的4:3宽高比,并将字幕和水印硬编码到视频中。 为此,我尝试了以下内容 .bat Windows中的文件,使用 ffmpeg的 。 for %%a in ("*.mp4") do ffmpeg -i "%%a"^ -i full_screen_watermark.png^ -aspect 4:3^ -filter_complex "scale=1024x576,crop=iw-304:ih:152:0,overlay=0:0,ass=%%~nA_outline.ass"^ -target pal-dvd "PAL_DVD_Format\%%~na.mpg" pause 对于单个文件,这是有效的,但似乎有一个问题 ass=%%~nA_outline.ass 部分批处理文件,因为我收到以下错误: …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.