【问题标题】:Simple batch file not executing?简单的批处理文件没有执行?
【发布时间】:2014-06-19 05:00:52
【问题描述】:

我正在尝试使用以下命令将 txt 文件合并到一个目录中

@echo off
cd /d C:\textfiles\
for %f in (*.txt) do type "%f" >> C:\Users\Desktop\output.txt

但是我没有得到任何输出(因为我很确定最后一行),有人可以帮我吗?

另外,如何使输出文件名自动为日期附加文本或日期,例如output_random.txt 还是 output_19.06.14.txt ?

已编辑代码(感谢 Stephan)但未添加日期:

@echo off
cd /d "C:\TextFiles"
for /f %%i in ('wmic os get localdatetime ^|find "20"') do set dt=%%i
set dt=%dt:~0,8%
for %%f in (*.txt) do type "%%f" >> C:\TextFiles\output-%dt%.txt

【问题讨论】:

  • 另外copy c:\textfiles\*.txt C:\Users\Desktop\output.txt 可能更直接。见copy /?
  • 嗨,伙计,谢谢,这似乎更简单了,尽管我想知道有什么区别?没有?
  • 你只是在努力地做这件事。当然,复制并不灵活,而 for 循环则灵活。此外,forfiles (forfiles/?) 旨在替换 for lops 用于类似这样的简单事情(以及 for 的其他常见用途)。 FOR 循环很丑。

标签: windows shell batch-file command-line command


【解决方案1】:

在批处理文件中,您必须使用 %%f 而不是 %f,这仅适用于命令行:

for %%f in (*.txt) do type "%%f" >> C:\Users\Desktop\output.txt

对于“随机或日期”部分:

正如您所说的“随机或日期”,我认为日期不必具有特定格式。最好的方法(因为独立于语言环境设置)是:

for /f %%i in ('wmic os get localdatetime ^|find "20"') do set dt=%%i
set dt=%dt:~0,8%

%dt% 的格式为 YYYYMMDD。 您可以使用set dt=%dt:~0,14% (YYYYMMDDhhmmss) 轻松添加时间并输出到...output-%dt%.txt

用于将%dt% 格式化为 DD-MM-YYYY:

set dt=%dt:~6,2%-%dt:~4,2%-%dt:~0,4%

延伸阅读 - How does the Windows Command Interpreter (CMD.EXE) parse scripts?

【讨论】:

  • 嗨斯蒂芬,非常感谢,合并功能现在工作!一个问题是日期没有附加到输出文件中。我编辑了我的顶级帖子以显示我当前的代码。您能否告诉我如何将日期格式转换为 DD-MM-YYYY?
  • “不附加到输出文件”是什么意思? “附加到文件名”或“将其写入文件内容”?有关格式化日期,请参阅我的编辑。
  • 不附加,因为我将输出文件设置为 C:\TextFiles\output-%dt%.txt 但输出的实际文件是“output.txt”
  • 嘿,我刚刚尝试了您的 DD-MM-YYYY 日期格式,现在可以了!我认为以前的日期格式(dt)可能不正确?无论哪种方式,它现在都可以正常工作,非常感谢你,斯蒂芬! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2016-09-09
相关资源
最近更新 更多