2014-10-08 107 views
0

我有一个类型命令的问题,基本上需要连接两个相同头文件,并将文件2附加在文件1中的数据。在直接执行批处理脚本时操作很好。但是,从第三方工具(Informatica Cloud)调用批处理时,键入工作为重写。文件2数据覆盖文件1数据。有人能帮我一个出路吗?键入命令问题

批处理脚本:

if "%time:~0,1%"==" " (set hh=0%time:~1,1%) else set hh=%time:~0,2% 
set timestamp=%date:~10,4%%date:~4,2%%date:~7,2%%hh%%time:~3,2%%time:~6,2% 
copy Sample_Transaction_Inbound_Veeva-i19.txt Sample_Transaction_Inbound_Veeva-i19_%timestamp%.txt 
for /f "skip=1 delims=*" %%a in (F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\Sample_Order_Transaction_Inbound_Veeva-i19.txt) do (
echo %%a >>F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\REMOVE_HEADER\newfile.txt  
) 
type F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\REMOVE_HEADER\newfile.txt >> F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\Sample_Transaction_Inbound_Veeva-i19_%timestamp%.txt 
REM echo "Yes" | copy /-Y F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\REMOVE_HEADER\*.txt "%TEMP%" 
REM xcopy C:\newfile.txt C:\file.txt /y 
del F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\REMOVE_HEADER\newfile.txt /f /q 
F:\OTS_Veeva_CRM\Utilities\7z a -y Sample_Transaction_Inbound_Veeva-i19_%timestamp%.zip Sample_Transaction_Inbound_Veeva-i19_%timestamp%.txt 
REM move Sample_Transaction_Inbound_Veeva-i19_%timestamp%.zip F:\OTS_Veeva_CRM\TargetFiles\ING2\Sample_Transaction_Inbound_Veeva-i19_%timestamp%.zip 
copy F:\OTS_Veeva_CRM\TargetFiles\ING2\Sample_Transaction_Inbound_Veeva-i19_%timestamp%.zip F:\OTS_Veeva_CRM\TargetFiles\ING2_Archive\Sample_Transaction_Inbound_Veeva-i19_%timestamp%.zip 
REM del F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL\Sample_Transaction_Inbound_Veeva-i19_%timestamp%.txt 

回答

1

你的问题是默认的Active Directory。由于某些文件引用不包括存储文件的文件夹,并且(至少在发布的代码中)没有明确的pushdcd /d,可能在从第三方工具调用批处理文件时存在不同的默认文件夹并找不到一些文件。

因此,解决方案应该确保已选定文件夹作为默认活动目录(在下面的示例中),或者包含所有文件引用中的所有路径。

对不起,我不得不重写它跟随的逻辑

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    if "%time:~0,1%"==" " (set hh=0%time:~1,1%) else set hh=%time:~0,2% 
    set "timestamp=%date:~10,4%%date:~4,2%%date:~7,2%%hh%%time:~3,2%%time:~6,2%" 

    set "inputFile1=Sample_Transaction_Inbound_Veeva-i19.txt" 
    set "inputFile2=Sample_Order_Transaction_Inbound_Veeva-i19.txt" 

    set "combinedBaseName=Sample_Transaction_Inbound_Veeva-i19_%timestamp%" 
    set "combinedFile=%combinedBaseName%.txt" 

    set "zip=F:\OTS_Veeva_CRM\Utilities\7z.exe" 
    set "outputFolder=F:\OTS_Veeva_CRM\TargetFiles\ING2_Archive" 

    set "sourceFolder=F:\OTS_Veeva_CRM\TargetFiles\ING2\SMPL" 
    pushd "%sourceFolder%" && (

     copy "%inputFile1%" "%combinedFile%" 
     >>"%combinedFile%" (
      for /f "usebackq skip=1 delims=" %%a in ("%inputFile2%") do @echo(%%a 
     ) 

     "%zip%" a -y "%outputFolder%\%combinedBaseName%.zip" "%combinedFile%" 

     popd 
    ) 
+0

由于MC ND !!完美的一个! – 2014-10-08 09:21:05

+0

您能否在这里详细说明复制声明的用法?我不清楚它是如何工作的。但是我的工作已经完成了,再次感谢! – 2014-10-08 09:24:07

+1

@SFDC_GEEK,和原来的代码一样。组合文件由第一个输入文件(复制为组合文件)和第二个输入文件(用'for'处理以删除第一行)生成, – 2014-10-08 09:25:48