【问题标题】:How to perform "find" command with another embedded command in another directory?如何使用另一个目录中的另一个嵌入式命令执行“查找”命令?
【发布时间】:2012-08-23 02:56:47
【问题描述】:

我想写一个函数,用另一个嵌入式命令执行“查找”命令,%recent% 在另一个目录(共享驱动器)中。

以下是思路:

REM Take in log file name input eg. "result_10030" = %1 to search for all result_10030*.log = %1*.log
REM Use the following to list the files matching result_10030*.log

for /f "delims=" %%x in ('dir /d /od /b %1*.log') do set recent=%%x
echo %recent%

REM Use %recent% as the file to perform find
REM Take in %2 as share drive path

find "PASSED" %2%recent%

显然它不起作用。

您的建议将不胜感激! :)

【问题讨论】:

  • 这看起来像一个 Windows 批处理文件 - 与 DOS、C#、python.net 或窗口(GUI 的东西,而不是操作系统)无关。还是我错过了什么?

标签: batch-file window dos


【解决方案1】:

DIR /D/B 选项不兼容 - /B 选项覆盖 /D 选项。

您的 FOR /F 循环还需要知道要查看的路径,而不仅仅是您的 FIND 指令。最简单的做法是将当前目录更改为所需路径。

pushd %2
for /f "delims=" %%x in ('dir /d /od /b "%~1*.log"') do set "recent=%%x"
echo %recent%
find "PASSED" "%recent%"
set rtn=%errorlevel%
popd
exit /b %rtn%

【讨论】:

  • 我试图删除 /D 并且它不会影响功能。我也试过/o-d和/od,它只是第一个文件和最后一个文件的排列。我需要 /od 来获取最后一个文件。
  • 其实我的计划是为这个函数创建一个批处理文件。该批处理文件能够获取最后一个文件并执行查找“PASSED”%recent%,前提是该批处理文件位于同一目录中的所有文件。但问题是我需要在其他目录中执行此功能。这就是为什么我提出这个想法的原因是找到“通过”%2%recent%。 %2 是存储文件/结果的路径。
  • @user1618511 - 糟糕 - 我把 /od 和 /ad 混淆了。我明白你现在正在尝试什么。查看我修改后的答案。
  • 嘿伙计,谢谢!!!这是工作。但这是另一种方法,无需将原始目录更改为特定目录,因为这将导致我的自动化流程停止工作。
  • @user1618511 - 当然,您可以将路径前缀放在 DIR 和 FIND 语句中。但另一种选择是在 FIND 完成后简单地 POPD 以返回您的原始位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2017-04-14
  • 1970-01-01
相关资源
最近更新 更多