创建一个脚本来收集昨天

时间:2017-07-31 10:21:15

标签: command-line cmd batch-processing ibm-sterling

我在Sterling B2B Integrator工作,我必须创建一个业务流程,只收集来自"昨天" (上一个日期)问题是B2Bi没有服务来做这个,而且colection目录有超过7000个文件,所以我不能使用GetDocInfo服务将日期收集到标签中,因为英镑可能会崩溃。

所以,我决定使用命令行适配器来调用一个可以帮我完成的脚本。问题是脚本无法正常工作:

set var1=%1       /* UNC File Path */

set var2=%2       /* Source directory */

set var3=%3       /* "yesterday" date */

set var4=%4       /* save the list of files into a .txt*/

set var5=%5       /* copy the files from yesterday into this directory */

PUSHd **%var1%** & 
forfiles /p **%var2%** /s /C  " cmd /c echo @path @FDATE | findstr /m **%var3%**" > %var4% & 
for /f %%a in (**%var4%**) do copy %%a **%var5%** &

功能:脚本应该从昨天收集文件并将它们保存到特定目录中。

示例:

PUSHd "\\emea\e801\Public" & 
forfiles /p _AppData\CAMS\PDFS\Digital\CertificadoCancelado /s /C  " cmd /c echo @path @FDATE | findstr /m "27/07/17"" > _Shared\_AppData\MFT\BackupSterling\temp_puente_PRO\Lista_DIGCRT02\ficherosAyer.txt & 
for /f %%a in (_Shared\_AppData\MFT\BackupSterling\temp_puente_PRO\Lista_DIGCRT02\ficherosAyer.txt) do copy %%a _Shared\_AppData\MFT\BackupSterling\temp_puente_PRO\Lista_DIGCRT02\DIGCRT02 &

为什么这个脚本不起作用?

1 个答案:

答案 0 :(得分:0)

脚本无法正常工作,因为它在语法上不正确。围绕变量名称的星号是什么。

这是一个简短的PowerShell脚本,它是您需要做的事情的核心。它需要一个Parms()块。如果您确信它将正确复制文件,请从-WhatIf命令中删除Copy-Item

请注意,这不会保留src_dir的子目录结构。如果您在不同的子目录中选择了具有相同名称的文件,则无法正常工作。

$src_dir = 'C:\src\t'       #var2
$the_date = '2017-07-21'    #var3
$log_file = 'C:\src\xxx'    #var4
$dest_dir = 'C:\src\xxx'    #var5

if (Test-Path $log_file) { Remove-Item $log_file }

Get-ChildItem -Path $src_dir -File -Recurse |
    ForEach-Object {
        if ((Get-Date $_.LastWriteTime -Format yyyy-MM-dd) -eq $the_date) { $_.FullName }
    } |
    Tee-Object -FilePath $log_file -Append |
    Copy-Item -Destination $dest_dir -WhatIf

如果您 - 必须从.bat脚本执行此操作,请将上面的脚本放入带有.ps1扩展名的文件名,例如Move-FilesDated.ps1。然后,从.bat脚本中调用它。

powershell -NoProfile -File "Move-FilesDated.ps1"