Articles of batch file

什么C#相当于“mklink / J”?

我知道如何在.bat脚本的窗口中创build一个符号链接: mklink /J <LinkPath> <OriginalResourcePath> 如何在C#中做同样的事情? 我一直不满意Googlesearch,因为我是C#的初学者,我可能不会使用正确的术语。 任何人都可以指出API使用吗?

当试图批量打印variables时,为什么我会收到“Echo is on”

我试图执行一个简单的batch file脚本: echo %1 set var = %1 echo %var% 当我在XP中运行它时,它给了我期望的输出,但是当我在Vista或Windows 7中运行它时,试图打印(回显)值时出现“Echo is On”。 以下是程序的输出: G:\2012>abc.bat 1 G:\2012>echo 1 1 G:\2012>set var = 1 G:\2012>echo ECHO is on. G:\2012>

在cmd.exe中,如何获得一个variables来转义setlocal命令?

我经常发现自己在cmd.exe使用setlocal ,以避免用临时variables污染环境variables空间(并确保命令扩展和延迟扩展都处于活动状态)。 然而,如果我真的想让这些variables中的一个变为可用的话,我就不知所措了。 考虑下面的代码,它给你当前目录的最后一个组件(所以c:\pax\dir1会给你dir1 ): @echoclosures :主要 setlocal enableextensions enabledelayedexpansion 调用:func echo.main_folder =%文件夹% ENDLOCAL goto:eof :FUNC setlocal enableextensions enabledelayedexpansion 设定温度=%cd% 设置文件夹= :funcloop1 如果不是“x%temp:〜-1%”==“x \”( 设置文件夹=!temp:〜-1 !!文件夹! 设置temp =!temp:〜1,-1! goto:funcloop1 ) echo.func_folder =%文件夹% ENDLOCAL goto:eof 当我运行这个,我得到的输出: func_folder = dir1 main_folder = 你可以看到%folder%variables不能在endlocal生存。 但是,如果我离开函数的setlocal/endlocal , tempvariables会污染main的名称空间。 我知道我可以在func的末尾使用set temp= ,这将删除环境variables,但是不包括我已经在外部作用域中使用该variables的情况(在这种情况下它将被完全销毁) 。 有没有一种方法在cmd.exe允许select一组环境variables传播到外部范围,同时仍然防止其他人影响它? 换句话说,你可以同时拥有局部variables和返回variables吗? 另外,请不要告诉我有一个获得最终path组件的更好方法。 这只是一个例子。 其实,你可以告诉我一个更好的方法,因为知道它会很高兴,但它不会回答我的具体问题:-)

如何使用与zip相同的名称的winrar提取文件夹中的所有压缩文件?

我需要迭代一个文件夹,并为每个压缩文件,我需要提取它的名字。 也就是说,如果它的test.zip那么它应该提取到testing文件夹。 同样,它应该遍历我的文件夹及其子文件夹,并提取的东西。 我写了下面的代码,但它不提取与压缩的名称。 请指教。 cd %CD%\Setups for /r %%i in ("*.zip") do ( echo "%%~fi" "C:\Program Files (x86)\WinRAR\WinRAR.exe" a -afzip "%%~dpi" "%%~fi" echo came after unzipping del /S /Q "%%~fi" ) exit \b

Windows批处理脚本url解码

我有一个批处理脚本,在我的networking上为我触发vlc,问题是它基于浏览器中的URL打开。 浏览器会自动添加%20来代替常规空间,在将文件path发送到vlc之前,我需要在批处理脚本中再次用常规空间replace它。 这是我的代码; @echo off set str=%1 set str=%str:~8% set str=%str:%%20= % START /D "C:\Program Files\VideoLAN\VLC\" vlc.exe %str% pause 值得一提的是,这将运行在Windows 7和/或Vista系统上。

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