批处理 - findstr中的错误

时间:2014-07-15 02:23:31

标签: batch-file findstr

我的目标是

  1. 映射网络文件夹
  2. 使用特定注册号
  3. 在每个确定日期查找文件
  4. 将文件复制到特定位置
  5. 这是我的代码:

        set "folder="
        set "date="
        set "No="
        set "fileName="
        echo:
        set /p folder=Please enter the folder name
        echo:
        set /p date=Please enter report date yyyymmdd = 
        echo:
        set /p No=Please enter registration number =  
        echo:
        net use Q: \\%folder%\d$\h
        net use R: \\%folder%\d$\p
        CD Q:\%date%\0\ | findstr /i %No% "*.*"
        echo:
        set /p fileName=Paste filename to resend = 
        echo:
        copy %fileName% y:
        echo:
        echo Copy Complete
        echo:
    

    这是输出:

    Please enter the folder you want to connect/reconnect = 0714
    Please enter report date yyyymm = 201407
    Please enter registration number =  74471958
    The command completed successfully.
    The command completed successfully.
    
    FINDSTR: Cannot open NTUSER.DAT
    FINDSTR: Cannot open NTUSER.DAT.LOG
    
    Paste filename to resend =
    

    我目前正在运行 D:中的批处理,并且已将 findstr.exe 复制到运行批处理文件的同一文件夹中。

    目前,我真的没有想法,希望有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:1)

你的问题是:

CD Q:\%date%\0\ | findstr /i %No% "*.*"

管道|获取上一个命令的输出并将其提供给以下命令。

cd命令的输出为空(或"系统无法找到此路径")。

所以这不是,(我认为)你需要什么。

我想,你想转到Q:\%date%\0\并在那里搜索包含%no%的文件。

为此,请使用:

cd /d "Q:\%date%\0\"
findstr /i %No% "*.*"

您需要/d参数与cd更改为另一个驱动器(或使用pushd而不是cd

答案 1 :(得分:0)

需要findstr.exe的问题取决于您执行此批次的具体方式。此可执行文件应位于c:\windows\system32中,该目录应位于path中。我echo %path%并从那里继续追求。

下一个问题是%date%。这是一个神奇的变量并且包含当前日期。它可以被set命令覆盖,但如果它在您的代码中设置为 nothing ,那么它将返回当前用户的当前系统日期& #39; s格式。

AFAIAA,CD没有输出;它只是改变目录。

我怀疑你正在使用cygwin,它为某些命令提供了不同的定义。