我在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 &
为什么这个脚本不起作用?
答案 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"