我目前正在批量写一个性能助手,写的是普通人可以阅读和编辑的。我的问题是,是否可以在不影响其可读性的情况下优化批处理代码? 这是我所拥有的一小段:
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "10.0" SET WinX10=1
if "%version%" == "6.3" SET WinX81=1
if "%version%" == "6.2" SET WinX80=1
if "%version%" == "6.1" SET WinX7=1
if "%version%" == "6.0" SET WinXVista=1
if "%version%" == "5.2" SET WinXXP64=1
if "%version%" == "5.1" SET WinXXP32=1
goto OSScanFinder
rem Scans your OS for version specific files, required for Extreme, Gaming, and Boot
:OSScanFinder
if defined WinX10 goto BootCleanWindows10Latest
if defined WinX81 goto BootCleanWindows81
if defined WinX80 goto BootCleanWindows80
if defined WinX7 goto BootCleanWindowsSeven
if defined WinXVista goto BootCleanVista
if defined WinXXP64 goto BootCleanXP64
if defined WinXXP32 goto BootCleanXP32
@echo Couldn't find your Operating System.
@echo I don't support Win2000, Windows Server 2003/R2/2008/R2/2012/R2
@echo Try running as administrator. If that doesn't work, please contact me at the address provided inside of the .bat file.
pause
exit
和
rem Chrome
if exist "C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe" SET ChromeYes=Defined
rem uTorrent
if exist "%userprofile%\Downloads\utorrent.exe" SET uTorrentYes=Defined
if defined ChromeYes TASKKILL /im Chrome.exe /f
if defined uTorrentYes TASKKILL /im utorrent.exe /f
我并不是要求有人优化我的代码,只是如果有什么可以写得更好,或者是否有更好的替代方法来使用“IF DEFINED”和“SET”同时保持可读性。
最佳答案
可读性 是一个抽象概念,因此取决于个人喜好。例如,在我看来,在您的代码中您以不同的方式将同一个问题做两次,因此它不必要地复杂。你可以这样做:
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "10.0" goto BootCleanWindows10Latest
if "%version%" == "6.3" goto BootCleanWindows81
if "%version%" == "6.2" goto BootCleanWindows80
if "%version%" == "6.1" goto BootCleanWindowsSeven
if "%version%" == "6.0" goto BootCleanVista
if "%version%" == "5.2" goto BootCleanXP64
if "%version%" == "5.1" goto BootCleanXP32
@echo Couldn't find your Operating System.
@echo I don't support Win2000, Windows Server 2003/R2/2008/R2/2012/R2
@echo Try running as administrator. If that doesn't work, please contact me at the address provided inside of the .bat file.
pause
exit
但是,在我看来较短的代码总是更容易阅读和理解,因此它也更可读。我会这样写这段代码:
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
call Version-%version%
if errorlevel 1 (
@echo Couldn't find your Operating System.
@echo I don't support Win2000, Windows Server 2003/R2/2008/R2/2012/R2
@echo Try running as administrator. If that doesn't work, please contact me at the address provided inside of the .bat file.
)
pause
exit
...并将文档添加到每个代码段中:
:Version-10.0 WinX10 BootCleanWindows10Latest
rem Apropriate code here
exit /B
:Version-6.3 WinX81 BootCleanWindows81
rem Apropriate code here
exit /B
... etc, until
:Version-5.1 WinXXP32 BootCleanXP32
rem Apropriate code here
exit /B
关于windows - 批处理可读性而不影响变量的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914584/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m