0

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

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

MOVE /Y %1 Z:\Target-Directory

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

问题 - 这些监视文件夹仅包含符号链接,而不是完整文件。完整的源文件位于另一个卷上。

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

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

考虑到这一点,有没有办法设计一个脚本来使用变量并知道移动实际的源文件,而不是符号链接?

谢谢。


编辑:

看起来该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 回答