2017-07-31 112 views
0

我正在Sterling B2B Integrator中工作,并且我必须创建一个业务流程以仅收集来自“昨天”(上一个日期)的文件问题是B2Bi没有一个服务来做到这一点,colection目录有超过7000个文件,所以我不能使用GetDocInfo服务将日期收集到标签中,因为Sterling可能会让人不快。创建一个脚本来收集昨天的文件

所以,我决定使用命令行适配器来调用一个脚本来为我做。问题是,该脚本无法正常工作或:

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 & 

为什么不工作这个脚本?

回答

0

该脚本不起作用,因为它在语法上不正确。星号围绕变量名称做了什么?

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

请注意,这不会保留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 

如果-must-做到这一点从.bat脚本,把脚本入一个文件名以.ps1扩展名,例如Move-FilesDated.ps1。然后,从.bat脚本调用它。

powershell -NoProfile -File "Move-FilesDated.ps1" 
相关问题