- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个执行以下操作的批处理文件:采用作为目录路径的参数 (%1)。然后,它要求用户输入扩展名 (%ext%)。最后,批处理文件使用 for 循环来计算目录及其以用户提供的扩展名结尾的子目录中存在的文件数量。此外,在循环执行此操作时,它还会输出每个文件的完全限定路径的控制台行。
我正在努力解决的问题是 for 循环。这是它的第一个版本:
for /f "delims=" %%f in ('dir /s/b "%1" ^| findstr /e "!ext!"') do (
set /a count+=1
set line=%%f
echo !line!
)
如果我输入任何以句点开头的扩展名(例如:.exe),此代码就可以正常工作。它计算行数(稍后显示计数值)并且 for 循环还显示每个子目录中每个 .exe 文件的完全限定路径。
但是,问题是如果我输入扩展名 exe(不带点的 .exe),它还会计算所有以“exe”结尾的文件夹和文件名。我不希望它那样做。无论输入“exe”还是“.exe”,我只希望它计算扩展名为 .exe 的文件数。
我再次尝试使用命令处理器扩展:
for %%F in ('dir /b "%1\*.!ext!"') do (
set /a count+=1
set line=%%~dpxfF
echo !line!
)
但我显然不知道我在这里做什么。我认为我应该能够以某种方式使用 %~xF,但在谷歌搜索数小时后我似乎无法理解它是如何使用的。我发现了类似的问题,但我无法弄明白。
有人可以给我写一个 for 循环来完成我需要它做的事情,并解释它是如何工作的吗?如果它能尽可能接近我的原始循环,那就太好了。
非常感谢!
最佳答案
Squashman,非常感谢。我研究了用 dir 抑制目录,但我没有费心去尝试 dir/a-d 像这样:
for /f "delims=" %%f in ('dir /s/b /a-d "%1" ^| findstr /e "!ext!"') do (
set /a count+=1
set line=%%f
echo !line!
)
此代码有效,但现在我对它为何有效感到困惑。因为我只抑制目录,所以文件名(及其扩展名)仍然出现。但是如果目录中有一个名为“exe.txt”的文件,我计算了所有扩展名为“exe”的文件,它不会将 exe.txt 文件算作其中之一。
为什么不这样做?它使用文件夹来完成。我猜是因为文件名及其扩展名类型是单个值? CMD 不会将这些东西分开,因此扩展名将始终粘在文件名上?
我也很想知道是否有人可以使用命令处理器扩展来做到这一点,因为我知道这是可能的。我会继续尝试,但 Squashman 的解决方案很棒!
关于Windows 命令行 : Display fully qualified paths of and count files in a directory and its subdirectories that have a user-defined extension,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603645/
根据这个answer ,下面的代码应该没有错误地编译: #include namespace { struct A { int i; }; volatile A a{}; static_assert
我了解导入 Data.List。 但是 importqualified Data.List 语句中的 qualified 是什么意思? 最佳答案 合格的导入使导入的实体仅以合格的形式可用,例如 imp
我正在尝试创建一个组件,该组件将接受一个特定的 bean (fasterxml ObjectMapper)。 如果有一个名为 qualifiedObjectMapper 的限定 bean,我想使用那个
我一直在编写以下代码来支持对右值的函数调用,而不必 std::move明确地在返回值上。 struct X { X& do_something() & { // some co
我正在尝试使用 GCC 编译器编译以下代码 class Class { public: uInt16 temp; const uInt32 function() const; } inline
我试图理解为什么我的编译器警告我有关此代码: static const char *const _menuMain_Strings_1[] __ATTR_PROGMEM__ = { _menuMai
我正在尝试将 Spring 4.x.x 迁移到 Spring boot,它依赖于外部 spring 2.5 jar 中的类。我已经进行了所有 Autowiring 更改,下面是我的应用程序类 @Spr
我从 eclipse git 中查看了最新的源代码:git://git.eclipse.org/gitroot/platform/eclipse.platform.releng.aggregator.
我发现许多门户网站都解释了类似的问题。但我想这是独特的情况。我在 spring mvc 应用程序中遇到错误。 org.springframework.beans.factory.Unsatisfied
我有下面的代码: package far.botshop.backend.controller; /** */ import java.util.logging.Logger; import far
我有 3 个数据源,设置如下: @Configuration @Component public class DataSourceConfig { @Bean("foo") @Conf
如何添加限定符来区分这两个 bean?我知道我需要使用 @Qualifier 注释,但我不确定如何将它添加到 bean 中,然后如何引用适当的 bean 创建 Autowiring 对象。 @Conf
@Override @Autowired(required = true) @Qualifier("hibernateCriteriaBuilder") public void setCriteria
我有 Circle 类: public class Circle { @Autowired @Qualifier("pointA") private Point center;
我在 Java Spring 环境中工作,并且在让 @Qualifier 工作时遇到了问题。我们项目的其他部分正在使用 @Inject 获取一个 bean,但我需要同一个 bean 的两个版本,看起来
“qualifier”的含义是什么?“qualifier”和“keyword”之间的区别是什么? 对于C语言中的volatile限定词,我们可以说volatile是一个关键字,那么“qualifier
我有一个简单的宏来设置一些常见的标题和格式: Dim colString(1 To 17, 1 To 2) As String Dim i As Integer colString(1, 1) = "
我正在将 Teradata 转换为 Hive(版本 0.10.0)。 Teradata 查询: QUALIFY ROW_NUMBER() OVER (PARTITION BY ADJSTMNT,SRC
我是在 PHP 中使用命名空间的新手,它们看起来很简单。然而,当我在一个包含类、接口(interface)和闭包的大文件的顶部添加一个命名空间时,代码完全停止工作。显然,某些元素没有正确限定。 例如:
我正在尝试使用属性占位符作为@Qualifier 的属性,如下所示: @Autowired @Qualifier("${beanName}") private MyBean myBean; 但是,这不
我是一名优秀的程序员,十分优秀!