我在查找名称中包含数字的文件时偶然发现了这一点。当我输入时:
目录 *编号*
(其中数字代表 0 到 9 之间的任意数字,星号和数字之间没有空格)
在 cmd.exe 命令提示符下,它会返回各种不符合搜索条件的文件。奇怪的是,根据目录的不同,一些数字会起作用,而另一些则不起作用。例如,在与网站关联的目录中,我键入以下内容:
dir *4*
返回的是:
Directory of C:\Ampps\www\includes\pages
04/30/2012 03:55 PM 153 inventory_list_retrieve.php
06/18/2012 11:17 AM 6,756 ix.html
06/19/2012 01:47 PM 257,501 jquery.1.7.1.js
3 File(s) 264,410 bytes
0 Dir(s) 362,280,906,752 bytes free
这对我来说没有任何意义。有什么线索吗?
问题是在stackOverflow上提出的,因为DIR命令在批处理程序中经常和FOR结合使用。如果使用 DIR 命令,奇怪的 DIR 行为似乎会使批处理程序变得不可靠。
编辑:(补充说明)。虽然已经过去了很多时间,但我发现了另一个怪癖,这几乎让我付出了很多工作。我想删除特定目录树中的所有 .htm 文件。我在这样做之前意识到 *.htm 也匹配 .html 文件。此外,*.man 与 .manifest 匹配,可能还有其他的。删除该特定目录中的所有 .html 文件至少可以说是令人沮丧的。
最佳答案
命令提示符处的通配符与长文件名和短“8.3”名称(如果存在)匹配。这会产生惊喜。
要查看短名称,请使用 DIR 命令的 /X 选项。
请注意,此行为在任何方面都不特定于 DIR 命令,并且当通配符在任何命令上匹配的次数超过预期时,可能会导致其他(通常是令人不快的)意外,例如 删除。
与 *nix shell 不同,用匹配名称列表替换文件模式是在每个命令中实现的,而不是由 shell 本身实现的。这可能意味着不同的命令可以实现不同的通配符模式规则,但实际上这种情况很少见,因为 Windows 提供 API 调用来搜索目录以查找与模式匹配的文件,并且大多数程序都以明显的方式使用这些调用。对于使用“常规”工具以 C 或 C++ 编写的程序,该扩展由 C 运行时库使用 Windows API“免费”提供。
有问题的 Windows API 是 FindFirstFile()及其近亲FindFirstFileEx() , FindNextFile() , 和 FindClose() .
奇怪的是,尽管 FindFirstFile() 的文档将其 lpFileName 参数描述为“目录或路径,以及可以包含通配符的文件名,例如星号 (* ) 或问号 (?)”,它实际上从未定义 * 和 ? 字符的含义。
文件模式的确切含义在 CP/M 中有历史记录操作系统可以追溯到 1970 年代初期,强烈影响(有些人可能会说“被直接复制”而不是这里的“影响”)MSDOS 的设计。这导致了许多“有趣”的工件和行为。 this blog post 中描述了 DOS 范围内的其中一些内容。从 2007 年开始,Raymond 准确描述了文件模式是如何在 DOS 中实现的。
关于windows - 奇怪的 Windows DIR 命令行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107044/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio
我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。
假设您在Ruby中执行此操作:ar=[1,2]x,y=ar然后,x==1和y==2。是否有一种方法可以在我自己的类中定义,从而产生相同的效果?例如rb=AllYourCode.newx,y=rb到目前为止,对于这样的赋值,我所能做的就是使x==rb和y=nil。Python有这样一个特性:>>>classFoo:...def__iter__(self):...returniter([1,2])...>>>x,y=Foo()>>>x1>>>y2 最佳答案 是的。定义#to_ary。这将使您的对象被视为要分配的数组。irb>o=Obje