带有引用sym链接的变量的脚本,但我需要移动/重命名源文件

时间:2013-03-11 21:26:20

标签: windows command-line batch-file

我们正在尝试设计一个Windows命令行脚本,该脚本将在转码作业结束时由应用程序触发脚本时移动和重命名源文件。

脚本的第一部分是移动源文件:

MOVE /Y %1 Z:\Target-Directory

%1变量引用监视文件夹中的源文件 变量的%source%info由主机应用程序(Carbon Coder)提供。

问题 - 这些监视文件夹只包含sym链接,而不是完整文件。完整的源文件存在于另一个卷上。

因此,正如您可能猜到的那样,当脚本执行时,它会移动符号链接而不是实际源。

将监视文件夹更改为实际源文件所在的卷不是一个选项。也没有将源文件复制到监视文件夹的当前位置。我们唯一的选择是在watch文件夹中创建一个指向源媒体的sym链接。

考虑到这一点,有没有办法设计一个脚本,它将使用变量并知道移动实际的源文件,而不是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快捷方式文件。

1 个答案:

答案 0 :(得分: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]