我们正在尝试设计一个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快捷方式文件。
答案 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]