5

ディレクトリとファイル名のCSVファイルを読み取るコマンドラインから実行している単純なxcopyスクリプトがあります。以前は問題なく非常によく似たスクリプトを使用しました。スクリプトは次のとおりです。

Z:\HOME\>for /f "delims=, tokens=1,2,3,4" %i in (Z:\HOME\MissingImages.csv) do
echo f | xcopy "Y:\%j\%k\%l" "C:\Horizon\%j\%k\%l" >> Z:\HOME\MissingImagesLog.txt

ただし、ファイルはコピーされていません。ログファイルのエントリは次のとおりです。

Does C:\Horizon\K\00\6bef500f.IMG  specify a file name
or directory name on the target
(F = file, D = directory)? f
0 File(s) copied

ルートディレクトリを別のディレクトリに変更すると、スクリプトはすべてのエントリのログファイルにデータを入力するだけなので、画像が見つかります0 File(s) copied。ファイルがそこにあり、表示されます...

また、Z:\ドライブはネットワーク上にあり、ローカルではありませんが、ネットワーク全体で非常によく似たスクリプトを問題なく使用しました(時間がかかるだけです)。

/i、などのさまざまなオプションを試しまし/sたが、ファイルをコピーすることができないようです。

4

3 に答える 3

11

xcopyは0 File(s) copied、パスを引用符で囲んだ場合にのみ、バックスラッシュ「\」の代わりにスラッシュ「/」をパスに使用した場合にも報告します。

  1. これは「0ファイルがコピーされました」で失敗します

    xcopy "pathname1/file" pathname2\file
    
  2. これは「パラメータの数が無効です」で失敗します

    xcopy pathname1/file pathname2\file
    
  3. これは問題なく動作します

    xcopy pathname1\file pathname2\file
    
于 2012-09-20T01:39:47.317 に答える
1

まあ、それは迷惑です。問題を見つけました。CSVファイルを生成したとき、各行の最後にスペースが入っているように見えるので、xcopyは拡張子の後にスペースがあるファイルを探していました。

私を失望させたのは、ファイルを見つけていたのにコピーできなかったため、ネットワークまたはxcopyの問題だと思いました。

sedスクリプトを実行してeolスペースを削除したところ、xcopyスクリプトが期待どおりに機能するようになりました。

于 2011-03-03T20:55:23.857 に答える
1

ディレクトリにコピーする(作成する)か、完全なターゲットパス名を指定するかがわからないため、尋ねられます。これは尋ねます:

xcopy pathname1\file.from pathname2\file.to

ただし、スラッシュを追加すると、ディレクトリにコピーすることがわかります。

xcopy pathname1\file.from pathname2\to\

しかし、ファイルをコピーして名前を変更したいことを明示的に伝える方法は見つかりませんでした。

echo Y | xcopy pathname1\file.from pathname2\file.to

私はあなたのケース(fordoxcopy)を少し試してみましたが、SOMEFILEはターゲット(F =ファイル、D =ディレクトリ)のファイル名またはディレクトリ名を指定していますか?echoからfが提供され、正常にコピーされます。したがって、ファイル/ディレクトリの指定には問題はありませんが、ネットワーク自体を介したコピーには問題があります。

于 2011-03-03T20:36:25.093 に答える