0

我在 Sterling B2B Integrator 工作,我必须创建一个业务流程来仅收集“昨天”(上一个日期)的文件问题是 B2Bi 没有执行此操作的服务,并且收集目录已经结束超过 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 &

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

4

1 回答 1

0

该脚本不起作用,因为它在语法上不正确。变量名称周围的星号是什么。

这是一个简短的 PowerShell 脚本,它是您需要做的核心。它需要有一个 Parms() 块。当您对它可以正确复制文件感到满意时,请-WhatIfCopy-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"
于 2017-07-31T23:40:51.790 回答