none
Returncode -2147475449 bei Befehl COPY oder DEL in CMD.EXE RRS feed

  • Frage

  • Hallo,

    ich arbeite unter Win Server2008R2 Enterprise und führe aus der Software SAS (Version 9.3 TS1M1) einen OS-Befehl aus (einmal COPY und einmal DEL).

    Leider schlägt das ab und an Fehl mit dem Returncode -2147475449 . Da ich bei Google nichts zu dem Returncode finde, stelle ich hier die Frage:

    Was bedeutet dieser Returncode ? Ich vermute, dass ein anderer Prozess auf der Datei sitzt. Da das ganze nachts im Batch passiert, gibts keine direkte Beobachtung. Im Eventlog der Maschine findet sich kein direkter Hinweis.

    Die Dateien dienen als Triggerfiles für einen Job-Scheduler und werden von einer vorhergehenden Jobkette erzeugt, die gestartete Jobkette verschiebt das File dann in ein Unterverzeichnis.

    Zuerst hatten wir den Befehl MOVE verwendet, der aber das gleiche Phänomen zeigte. Da wir dachten, dass die Datei aber auf jeden Fall kopiert werden kann, auch wenn ein anderer Prozess draufsitzt, haben wir zur Kombination COPY / DEL gegriffen. Leider mit dem gleichen Ergebnis.

    Das ganze wird in einem Log protokolliert, sieht dann z.B. so aus (SAS-Code, der den Befehl absetzt, ist hier nicht dabei, da zu speziell !?):

    Befehl fuer COPY: copy /V /Y /Z  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST.TXT G:\Hostimport\gestartet\DWH_M_F_E_LADEN_LDWBEST.TXT

    SYSRC aus CALL SYSTEM-Kommando fuer COPY = -2147475449
    Befehl fuer DEL: del /F /Q  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST.TXT

    SYSRC aus CALL SYSTEM-Kommando fuer DEL = -2147475449
    Befehl fuer COPY: copy /V /Y /Z  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST_02.TXT G:\Hostimport\gestartet\DWH_M_F_E_LADEN_LDWBEST_02.TXT

    SYSRC aus CALL SYSTEM-Kommando fuer COPY = -2147475449
    Befehl fuer DEL: del /F /Q  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST_02.TXT

    SYSRC aus CALL SYSTEM-Kommando fuer DEL = -2147475449

    Mittwoch, 2. Januar 2013 14:10

Antworten

  •  
    > Leider schlägt das ab und an Fehl mit dem Returncode -2147475449 . Da
    > ich bei Google nichts zu dem Returncode finde, stelle ich hier die Frage:
     
    Bei dem RC bist Du Dir sicher, daß da keine Zahl fehlt?
     
    P:\>hex2dec  -2147475449
     
    Hex2dec - converts hex to decimal and vice versa
    Copyright (C) 2004 Mark Russinovich
    Sysinternals - www.sysinternals.com
     
    -2147475449 = 0xFFFFFFFF80002007
     
    P:\>err 80002007
    # as an HRESULT: Severity: SUCCESS (0), Facility: 0x4c4, Code 0xbbd7
    # NOT FOUND: 80002007
     
    Wundert mich, daß Windows hier einen RC ausspucken sollte, der gar nicht
    definiert ist?!?
     
    Testhalber kannst Du doch sicher auch ne CMD ausführen, und in der dann
    die Befehle absetzen:
     
    set log=%temp%\logfile
    copy /V /Y /Z  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST.TXT
    G:\Hostimport\gestartet\DWH_M_F_E_LADEN_LDWBEST.TXT >>%log% 2>>&1
     
    Dann siehst Du wenigstens, was die Befehle so protokollieren...
     
    mfg Martin
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort markiert K. Meyer Freitag, 4. Januar 2013 13:26
    Freitag, 4. Januar 2013 12:03
  • Hallo,

    hab das jetzt anders gelöst. Ich lese die Datei mit SAS ein und schreibe sie an der anderen Stelle neu. Anschließend lösche ich die alte Datei mit einer SAS-Internen Funktion. So umgehe ich jetzt das Absetzen eines Shell-Kommandos. Das klappt auch.

    Die Idee kam mir, da ich für die Meldung "No application is associated with the specified file for this operation" auf Probleme von DotNet-Programmierern gestossen bin, die beim Start von externen EXE-Programmen (auch ohne zusätzliche Dateien zum öffnen, also ohne eine Datei-Endungsverknüpfung anzusprechen) die gleiche Meldung erhielten, wenn der Programmstart als "ShellExec" ausgeführt wird.

    Na ja, ein guter Workaround ist besser als nichts ... :-))

    • Als Antwort markiert K. Meyer Donnerstag, 17. Januar 2013 13:46
    Donnerstag, 17. Januar 2013 13:46

Alle Antworten

  •  
    > Leider schlägt das ab und an Fehl mit dem Returncode -2147475449 . Da
    > ich bei Google nichts zu dem Returncode finde, stelle ich hier die Frage:
     
    Bei dem RC bist Du Dir sicher, daß da keine Zahl fehlt?
     
    P:\>hex2dec  -2147475449
     
    Hex2dec - converts hex to decimal and vice versa
    Copyright (C) 2004 Mark Russinovich
    Sysinternals - www.sysinternals.com
     
    -2147475449 = 0xFFFFFFFF80002007
     
    P:\>err 80002007
    # as an HRESULT: Severity: SUCCESS (0), Facility: 0x4c4, Code 0xbbd7
    # NOT FOUND: 80002007
     
    Wundert mich, daß Windows hier einen RC ausspucken sollte, der gar nicht
    definiert ist?!?
     
    Testhalber kannst Du doch sicher auch ne CMD ausführen, und in der dann
    die Befehle absetzen:
     
    set log=%temp%\logfile
    copy /V /Y /Z  G:\Hostimport\DWH_M_F_E_LADEN_LDWBEST.TXT
    G:\Hostimport\gestartet\DWH_M_F_E_LADEN_LDWBEST.TXT >>%log% 2>>&1
     
    Dann siehst Du wenigstens, was die Befehle so protokollieren...
     
    mfg Martin
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort markiert K. Meyer Freitag, 4. Januar 2013 13:26
    Freitag, 4. Januar 2013 12:03
  • Hallo Martin,

    danke für die Antwort.  An der Zahl / Returncode fehlt keine Ziffer, habe den Block so wie er oben steht aus dem Log kopiert .....

    Laut der Hilfe im SAS-Programm bekommt man an der Stelle den Returncode des Betriebssystems zurück:

    Function SYSTEM: Issues an operating environment command during a SAS session, and returns the system return code.

    Das Programm "err", das du verwendest, ist das von sysinternals? Windows kennt das ja nicht.

    Habe jetzt für die Befehlszeile das Logging analog zu deinem Vorschlag eingebaut, jetzt muss ich nur noch auf den Fehler warten und hoffen, dass was hilfreiches drinsteht :-)

    Viele Grüße

    Karlheinz

    Freitag, 4. Januar 2013 13:25
  •  
    > Das Programm "err", das du verwendest, ist das von sysinternals?
    > Windows kennt das ja nicht.
     
    Nee, das ist von Microsoft - kommt aber unter "Exchange Server" daher ;-)
     
    Alternativ gibt's noch winerror.exe aus dem WDK:
    Ist zwar neuer, kennt aber nicht so viele Header.
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    Freitag, 4. Januar 2013 14:01
  • Hallo,

    Der Fehler ist jetzt wieder aufgetreten. Leider wird für den COPY- / DEL-Befehl im Fehlerfall überhaupt kein Log erzeugt. Dafür steht diesmal eine zusätzliche Meldung im Log : "No application is associated with the specified file for this operation." . Dies kann eigentlich nicht sein, denn wenn man auf der Maschine sich mit dem betroffenen Batch-User anmeldet und auf eine *.txt-Datei doppelklickt, startet der Ultraedit (wenn auch eine alte Version). Insofern ist die Endung registriert.

    Tja, da steh ich nun ....

    Log-Auszug:

    Befehl fuer COPY:
    23                                                         Das SAS System                             11:31 Tuesday, January 8, 2013

    copy /Y  G:\DWH\LSF\Trigger\DWH_M_F_TL_PRODUKT.TXT G:\DWH\LSF\Trigger\gestartet\DWH_M_F_TL_PRODUKT.TXT >>G:\Saslog\cmdlog\copy_DWH_M
    _F_TL_PRODUKT.TXT.log 2>>&1
    No application is associated with the specified file for this operation.
    SYSRC aus CALL SYSTEM-Kommando fuer COPY = -2147475449
    Befehl fuer DEL: del /F /Q  G:\DWH\LSF\Trigger\DWH_M_F_TL_PRODUKT.TXT >>G:\Saslog\cmdlog\del_DWH_M_F_TL_PRODUKT.TXT.log 2>>&1
    No application is associated with the specified file for this operation.
    SYSRC aus CALL SYSTEM-Kommando fuer DEL = -2147475449

    Dienstag, 8. Januar 2013 10:55
  •  
    > copy /Y  G:\DWH\LSF\Trigger\DWH_M_F_TL_PRODUKT.TXT
    > G:\DWH\LSF\Trigger\gestartet\DWH_M_F_TL_PRODUKT.TXT
    > >>G:\Saslog\cmdlog\copy_DWH_M
    >
    > _F_TL_PRODUKT.TXT.log 2>>&1
    > No application is associated with the specified file for this operation.
    >
     
    Dann mußt Dich wohl mal mit dem Hersteller der Applikation
    auseinandersetzen - keine Ahnung, wie genau die ihre System-Calls
    realisieren...
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    Dienstag, 8. Januar 2013 12:25
  • Hallo,

    hab das jetzt anders gelöst. Ich lese die Datei mit SAS ein und schreibe sie an der anderen Stelle neu. Anschließend lösche ich die alte Datei mit einer SAS-Internen Funktion. So umgehe ich jetzt das Absetzen eines Shell-Kommandos. Das klappt auch.

    Die Idee kam mir, da ich für die Meldung "No application is associated with the specified file for this operation" auf Probleme von DotNet-Programmierern gestossen bin, die beim Start von externen EXE-Programmen (auch ohne zusätzliche Dateien zum öffnen, also ohne eine Datei-Endungsverknüpfung anzusprechen) die gleiche Meldung erhielten, wenn der Programmstart als "ShellExec" ausgeführt wird.

    Na ja, ein guter Workaround ist besser als nichts ... :-))

    • Als Antwort markiert K. Meyer Donnerstag, 17. Januar 2013 13:46
    Donnerstag, 17. Januar 2013 13:46