0

トランスコード ジョブの最後にアプリケーションによってスクリプトがトリガーされたときに、ソース ファイルを移動して名前を変更する Windows コマンド ライン スクリプトを設計しようとしています。

スクリプトの最初の部分は、ソース ファイルを移動することです。

MOVE /Y %1 Z:\Target-Directory

変数は%1監視フォルダー内のソース ファイルを参照します。
変数の %source% 情報は、ホスト アプリケーション (Carbon Coder) によって提供されます。

問題 - これらの監視フォルダーには、完全なファイルではなく、sym リンクのみが含まれています。完全なソース ファイルは別のボリュームにあります。

したがって、ご想像のとおり、スクリプトを実行すると、実際のソースではなく、シンボリック リンクが移動します。

実際のソース ファイルが配置されているボリュームにウォッチ フォルダーを変更することはできません。ソース ファイルを監視フォルダーの現在の場所にコピーすることもありません。唯一のオプションは、監視フォルダーにソース メディアを指すシンボリック リンクを作成することです。

それを念頭に置いて、変数を使用し、シンボリックリンクではなく実際のソースファイルを移動することを知っているスクリプトを設計する方法はありますか?

ありがとう。


編集:

dirコマンドはこれらのファイルのソースの場所情報を生成しないようです。

 Volume in drive K is CarbonCoder-Local
 Volume Serial Number is B0A3-97E8

 Directory of K:\CarbonCoder_WatchFolders\ProResHQ_4Chan_NTSC

03/12/2013  09:56 AM    <DIR>          .
03/12/2013  09:56 AM    <DIR>          ..
03/12/2013  09:56 AM               853 test-01.mov.lnk
03/12/2013  09:56 AM               853 test-02.mov.lnk
03/12/2013  09:56 AM               853 test-03.mov.lnk
03/12/2013  09:56 AM               853 test-04.mov.lnk
03/12/2013  09:56 AM               853 test-05.mov.lnk
               5 File(s)          4,265 bytes
               2 Dir(s)  9,365,513,400,320 bytes free

私は間違っていました。これらはシンボリック リンクではなく、単なる mircosoft ショートカット ファイルです。

4

1 に答える 1

0

答え

バッチの場合、dirコマンドを使用してシンボリック リンクとそのターゲットを識別します。

C:\>mklink symlink.txt C:\Folder\File.txt
symbolic link created for symlink.txt <<===>> C:\Folder\File.txt

C:\>dir Folder
 Volume in drive C is OSDisk
 Volume Serial Number is DC11-1111

 Directory of C:\

03/11/2013  04:45 PM    <DIR>          .
03/11/2013  04:45 PM    <DIR>          ..
03/11/2013  04:45 PM    <DIR>          Folder
03/11/2013  04:45 PM    <SYMLINK>      symlink.txt [C:\Folder\File.txt]
...

使用法

dirバッチ スクリプトで必要に応じてコマンド情報を使用する方法について、この図 (テストされていない例) を追加するように編集しました。

setlocal EnableExtensions EnableDelayedExpansion
for /f "delims=" %%A in ('dir "%~1" ^| find /i "%~nx1"') do (
    set "Information=%%A"
    for /f "tokens=4*" %%B in ("!Information:%~nx1=!") do (
        echo %%B
    )
)
endlocal

出力

[C:\Folder\File.txt]
于 2013-03-11T21:52:10.443 に答える