使用批处理脚本检查目录中是否有带模式的文件

时间:2018-06-24 20:19:26

标签: powershell batch-file command-line-interface

当另一个作业完成对文件的处理后,该文件将被放入目录中。 要求运行批处理脚本以检查文件是否今天可用。如果有的话,我需要执行某些批处理脚本。 (例如:具有命名模式ABC-D * .txt的文件应具有修改日期= today 的文件)

到目前为止,我发现的是:

FOR /F "tokens=1,2,3* Delims=/ " %%I in ('DATE /T') DO set TODAY=%%I-%%J-%%K
xcopy C:\BatchJobs\Odd*.* /L /D:%TODAY%

运行此命令可获得输出:

C:\BatchJobs\OddEven.txt
File cannot be copied onto itself
0 File(s)

C:\BatchJobs\OddEven.txt,我需要在控制台中显示。但是我需要将其存储在某个文件或某个变量中,以便以后在批处理脚本中使用此路径。有人可以帮助我将此文件路径存储在变量或文件中吗?还是提出其他实现此目标的方法?

2 个答案:

答案 0 :(得分:3)

您可以使用forfiles来过滤文件的最后修改日期,而不考虑时间:

forfiles /P "D:\ROOT" /M "ABC-D*.txt" /D +0 /C "cmd /C echo @file"

您可以声明要执行的批处理脚本而不是echo

答案 1 :(得分:2)

此代码将标识今天最后写入的“ ABC-D * .txt”文件。将下面的代码放入文件{ "name": "happy-holidays", "version": "1.0.0", "description": "", "engines": { "node": "8.9.4" }, "scripts": { "start": "concurrently --kill-others-on-fail \"yarn run server\" \"yarn run client\"", "server": "cd server && yarn start", "client": "cd react-ui && yarn start" }, "license": "UNLICENSED" , "cacheDirectories": [ "node_modules", "react-ui/node_modules" ], "dependencies": { "@sendgrid/mail": "^6.2.1", "axios": "^0.18.0", "body-parser": "^1.18.2", "bootstrap": "^4.1.1", "concurrently": "^3.5.1", "dotenv": "^5.0.1", "ejs": "^2.6.1", "express": "^4.16.3", "mongoose": "^5.1.0", "react": "^16.3.2", "react-bootstrap": "^0.32.1", "react-dom": "^16.3.2", "react-router-dom": "^4.2.2", "react-scripts": "1.1.4", "semantic-ui-css": "^2.3.1", "semantic-ui-react": "^0.80.2" }, "repository": { "type": "git", "url": "https://github.com/SaraRandolph/messagez" }, "devDependencies": {} } 中(但请选择一个更好的名称)。我在文件上执行了doit.ps1命令,但是您将需要做其他事情。

attrib

然后,您可以使用以下命令从cmd shell运行它:

$srcdir = 'C:\src\t\empty'

Get-ChildItem -File -Path $srcdir -Filter 'ABC-D*.txt' |
    Where-Object { $_.LastWriteTime -ge [datetime]::Today } |
    ForEach-Object {
        # Do something to the $_ file
        & attrib $_
    }