关于windows批处理文件的奇怪问题

2024-03-15

I got 1.txt and 2.txt在我的工作目录中。我使用以下批处理列出所有文件。

批次是这样的:

@echo off
for /f "tokens=*" %%a in ('dir *.txt /b') do (
    echo ---------------
    set file_variable=%%a
    echo file_variable=%file_variable%
    echo filename=%%a
    )    

结果如下:

---------------
file_variable=2.txt   <---------------why it is not 1.txt here??
filename=1.txt
---------------
file_variable=2.txt
filename=2.txt

Thanks.


你需要输入:

@setlocal enableextensions enabledelayedexpansion

在你的文件的顶部和

endlocal

在最后。

那么就需要使用延迟扩展替换字符。

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=*" %%a in ('dir *.txt /b') do (
    echo ---------------
    set file_variable=%%a
    echo file_variable=!file_variable!
    echo filename=%%a
)
endlocal

C:\Documents and Settings\Pax\My Documents> qq.cmd
---------------
file_variable=1.txt
filename=1.txt
---------------
file_variable=2.txt
filename=2.txt

在没有延迟扩展的情况下,您会看到整个for循环在运行前被评估。这包括替换,因此%file_variable%将被替换为它所持有的值before循环开始了。使用延迟扩展可以推迟评估,直到执行实际的行。


这里有各种精彩的 Windows 脚本技巧罗布·范德沃德的网站 http://www.robvanderwoude.com/,包含在 Windows 下使用各种工具执行操作的多种不同方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于windows批处理文件的奇怪问题 的相关文章

  • 如何在批处理文件中获得相当于 dirname() 的内容?

    我想从 a 中获取文件的父目录 bat文件 因此 给定一个变量设置为 C MyDir MyFile txt 我想得到 C MyDir 换句话说 相当于dirname 典型 UNIX 环境中的功能 这可能吗 for F in filename
  • 有没有办法让 python 在脚本中间变得交互式?

    我想做这样的事情 do lots of stuff to prepare a good environement become interactive wait for Ctrl D automatically clean up 用 pyt
  • 获取批处理文件中两个目录的路径

    我想获取从当前位置向上 2 个目录的文件夹的路径 我正在做以下事情 echo CD set NEW PATH bin echo PATH 当我运行上面的代码时 我打印了当前目录路径 但 NEW PATH 不是 它只是说 ECHO OFF 从
  • 在 Windows 中,如何将单个文本文件中的多行合并为一行?

    我有多个遵循此格式的标准文本文件 每个文件中的行数不同 Line1 Line2 Line3 Line4 我想将每一行合并为一行 每组字符之间有一个空格 因此文本文件将如下所示 Line1 Line2 Line3 Line3 等等 由于每个文
  • 如何将 bash 脚本变量与 sed 一起使用[重复]

    这个问题在这里已经有答案了 我执行以下 bash 脚本 bin bash version 1 echo version sed s version number version template txt gt readme txt 我希望用
  • 什么可能导致 PUSHD 失败?

    我有一个很棒的大脚本 完全依赖于 PUSHD 然而当我打字时突然pushd server1 dir1我越来越 C Documents and Settings userNameHere gt pushd server1 dir1 CMD d
  • 无法以管理员身份运行

    我必须执行ewfmgr exe仅当以管理员身份打开命令窗口时才能执行 如果我去Start gt type cmd exe gt Right click gt Run as Administrator然后出现以下命令提示符窗口 在这个窗口中
  • 使用 xcopy 命令时出现“复制的无效路径 0 个文件”错误

    您好 我有一个小命令可以批量复制文件 这会有所帮助 因为我每天会多次执行此特定复制 使用 xcopy 命令时会出现此问题 一切都按顺序进行 但我收到此错误 复制的路径 0 文件无效 这是代码 C Windows System32 xcopy
  • 使用批处理文件自动化 Windows 命令行实用程序 - 在实用程序启动后将击键发送到 std 输入

    我有一个命令行实用程序 它打开由命令行中发送的参数指定的串行连接 该实用程序启动后 我可以在 std 输入中键入内容 以将字符串发送到我所连接的端口 我想做的是使用批处理文件启动该实用程序 足够简单 然后自动执行我希望发送的击键 我自己运气
  • 同时运行多个 Python 脚本,然后依次运行

    我可以像这样从 bash 脚本同时运行多个 Python 脚本 bin bash python pr1 py python pr2 py python aop py python loader py 但是 如果我希望一批同时触发 并在运行后
  • 如何从VBA在CMD中输入多行代码?

    我想打开一个cmd exe 然后执行几行代码 我在网上搜索了一些例子 我尝试修改的代码 strToPrint Hello World Shell cmd exe K echo strToPrint vbNormalFocus I found
  • cmd dir /b/s 加日期

    我正在 Windows XP 中寻找 cmd shell 命令 例如 dir b s 其中包含结果中每个文件的日期和时间值 所有数据 路径 文件名和日期 时间 都需要位于一行上 任何人都可以提供命令来完成此任务吗 谢谢 如果您只想要文件 f
  • 从MAC地址获取IP。 arp -a 不显示设备

    我正在尝试编写一个批处理文件 该文件应该在连接到网络 腾达 WiFi 路由器 时找到我的 Android 手机的动态分配的 IP 所以我正在尝试arp a并搜索我手机的 MAC 地址 以便我可以从表中获取其 IP C Users Leero
  • 并排启动两个资源管理器窗口

    有没有办法使用批处理脚本并排 垂直平铺 启动两个资源管理器窗口 如果没有 我该如何使用 VBS 来做到这一点 我已经修改了上面的VBS脚本Hackoo完全按照OP的要求去做 脚本中的注释准确地解释了它将做什么 如果两个窗口未设置到正确位置
  • 文件类型 .pl 关联并使用 cmd.exe 运行脚本

    我创建了一个新的文件类型 pl 资源管理器 gt 工具 gt 文件夹选项 gt 文件类型 现在我想创建一个新的操作 它将调用 cmd exe 并自动运行 PERL 脚本 我不知道在 用于执行操作的应用程序 下要写什么 我必须向 cmd ex
  • SQLite - 从文件运行多行 SQL 脚本?

    我的 user sql 文件中有以下 SQL CREATE TABLE user user id INTEGER PRIMARY KEY username varchar 255 password varchar 255 然而 当执行以下命
  • Roslyn 脚本:运行时异常的行号信息

    我正在摆弄 Roslyn 脚本的东西 使用Microsoft CodeAnalysis CSharp Scriptingnuget 包 我想知道是否有一种方法可以将行号信息添加到堆栈跟踪中 以了解脚本内发生的异常 当我运行以下 C 代码时
  • 如何在 hash-bang 可执行文件中引用本地 ruby​​?

    我有一个 Ruby 可执行文件 它是一个捆绑器 binstub 它以 usr bin env ruby 在我的服务器上 我通过 RVM 安装了 Ruby 193 which ruby gt home dtuite rvm rubies ru
  • 阻止 gulp 更改 shell/cmd 标题名称

    当 gulp 被调用时 它会将我的 cmd windows 标题更改为 gulp 我希望窗口名称保持原样 我知道我可以使用https www npmjs com package gulp shell https www npmjs com
  • 程序关闭后,Windows 中的文件可以锁定多长时间?

    在我使用的几个脚本中 我遇到了间歇性的问题 有时 尝试删除文件时脚本会失败 根据错误日志 由于该文件被其他进程访问 我猜测在对文件执行的上一个操作结束后 Windows 没有时间释放该文件 窗口应该有时间再次释放文件的时间是多少时间 如果

随机推荐

  • 如何从Jira REST API获取一段时间内的所有工作日志?

    我正在使用 PHP 和 Jira REST API 编写一个应用程序 该应用程序需要生成特定时间段的报告 其中包含一个人在特定项目上花费的时间的累积 为此 我需要打一个电话 给出类似的信息 e g For the period 01 01
  • 如何从 doPost 函数获取变量传递给 Html 模板

    大家好 我正在使用 Google 脚本中的 doPost 函数创建电子邮件 OTP 模板 实际上 我有一个应用程序 当用户请求 OTP 时 他的详细信息 如姓名 电子邮件和应用程序生成的 OTP 将发送到此脚本 然后它将电子邮件发送给用户
  • 如何让 typedef 类型从类型类的母类型继承运算符

    发布答案后续问题 Brian 提供了答案 并建议使用提升和转移的解决方案 然而 我找不到足够的关于举重和转移的教程信息 无法知道如何调整他的答案来完成我需要做的事情 在这里 我在黑暗中工作 并使用给出的答案作为即插即用模板来提出这个后续问题
  • C++ 函数参数中的指针与引用 [重复]

    这个问题在这里已经有答案了 我想知道如何让一个函数改变两个变量 返回值和另一个变量 我偶然发现在参数 我理解是指参数的地址 之前使用 调用该函数 然后在整个函数中 用 符号引用它 我猜这是 取消引用 意味着它改变了地址处的对象 不管怎样 一
  • 将 HTML 高度设置为 100% 可消除滚动

    我不明白为什么这不起作用 我需要将 HTML 和正文的高度设置为 100 以设置页面内三行的高度 但是当我这样做时 它会消除滚动 特别是在移动设备上 甚至在某些浏览器窗口大小调整大小时也是如此 html body height 100 di
  • 制作一个具有响应宽度且仅 CSS 的箭头形状

    我正在尝试制作一个带有向上箭头的容器 我熟悉边框绘制技巧 https stackoverflow com questions 7073484 how does this css triangle shape work并认为这是一个可能的解决
  • PyPI 区分大小写吗?

    PyPI 如何处理区分大小写 例如 这个问题 https stackoverflow com questions 17460747 change case of package name on pypi记录 PyPI 拒绝新包foobar
  • 如何更改vmlite android的屏幕尺寸?

    我安装了这很棒 但有一件事我找不到解决方案 如何更改屏幕尺寸 它有一个固定的屏幕宽度 高度比例 但我需要改变它来模拟一些Android手机 我搜索了很多但没有找到解决方案 请帮忙 UPDATE grub菜单如下 cmdline hd0 2
  • SqlDataAdapter.Dispose 实际上是否关闭关联的 SqlConnection?

    有谁知道 SqlDataAdapter Dispose 方法是否实际关闭或处置任何 SqlConnections 我加载了 Reflector 发现 SqlDataAdapter 继承自 DbDataAdapter 如果我反汇编并查看该类中
  • Android dataBinding - 如何使用 bool 资源触发布局的可见性

    我目前在 android 中有一个 bool xml 文件 如下所示
  • 如何在没有任何权限检查的情况下从相对路径获取最小绝对路径?

    假设我有两个路径字符串 一个是绝对路径字符串 例如 C abc xyz 以及一个相关的 例如 def 我如何可靠地将它们组合起来以产生最小形式 C abc def 由于该过程应该适用于 NET 的 I O API 支持的任何形式的路径 即
  • Python3 PyQt4 创建一个简单的 QCheckBox 并更改布尔变量

    所以我一直在尝试使用Python 3 3和PyQt4编写一个GUI 我已经完成了一些教程 但仍然无法弄清楚如何让复选框检查和取消检查全局变量中的触发更改 我无法让它触发任何事情 因为所有教程都使用对我不起作用的方法 该程序太大 无法作为一个
  • Perl 增量运算符

    a 10 b a a a print b 我得到了答案 37 谁能解释一下这个操作是如何进行的以及结果是如何得到 37 的 按照我的逻辑 它应该是 36 a a a 11 12 13 36 但我得到了答案 37 Perl 的执行方式为 a
  • 带有变量的sql use语句

    我正在尝试使用 SQL 语句切换当前数据库 我已尝试以下操作 但所有尝试均失败 1 USE DatabaseName 2 EXEC sp sqlexec Sql where Sql USE DatabaseName 添加更多细节 编辑 我想
  • 复制构造函数省略? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么析构函数只被调用一次 https stackoverflow com questions 6422114 why has the destructor been called only once
  • 带有自定义项目的底部导航视图(actionLayout)

    我想在新的中添加一个自定义项目底部导航视图 https developer android com reference android support design widget BottomNavigationView html 有很多关
  • 并排条形图,其中各列按组比例(相对频率条形图)

    数据集 gender lt c Male Male Male Female Female Female Male Male Male Female Female Female Female Female Male Female Female
  • 我可以用 webpack 和 angular2 替换 systemJS

    我知道 systemJS 和 webpack 也在做同样的事情 所以我想用 webpack 替换 systemJS 但是当我删除 html 页面中的 system js 脚本引用时 出现以下错误 angular2 js 2 Uncaught
  • 标签栏背景颜色未更改

    我是 React Native 开发的新手 我在用标签导航器 from 反应导航 对于标签栏React Native 一切工作正常 除了标签栏 activeBackgroundColor 和 inactiveBackgroundColor
  • 关于windows批处理文件的奇怪问题

    I got 1 txt and 2 txt在我的工作目录中 我使用以下批处理列出所有文件 批次是这样的 echo off for f tokens a in dir txt b do echo set file variable a ech