Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows mklink:symlink到批处理文件未运行批处理文件_Windows_Batch File_Cmd_Mklink - Fatal编程技术网

Windows mklink:symlink到批处理文件未运行批处理文件

Windows mklink:symlink到批处理文件未运行批处理文件,windows,batch-file,cmd,mklink,Windows,Batch File,Cmd,Mklink,这里的问题是,在创建到批处理文件的符号链接后,该链接不会运行批处理文件。例如: mklink x x.cmd 当点击x时,它会在记事本中打开x.cmd!普通快捷方式(.lnk文件)按预期工作 > ftype cmdfile cmdfile="%1" %* > assoc .cmd .cmd=cmdfile 因此每个.cmd文件都应该自己运行 有解决方案吗?一种方法是建立硬链接(mklink/H)。但既然我认为你只是需要某种捷径,那就试试这个: 1) 制作一个shell脚本*.vb

这里的问题是,在创建到批处理文件的符号链接后,该链接不会运行批处理文件。例如:

mklink x x.cmd
当点击
x
时,它会在记事本中打开
x.cmd
!普通快捷方式(.lnk文件)按预期工作

> ftype cmdfile
cmdfile="%1" %*
> assoc .cmd
.cmd=cmdfile
因此每个.cmd文件都应该自己运行


有解决方案吗?

一种方法是建立硬链接(mklink/H)。但既然我认为你只是需要某种捷径,那就试试这个:

1) 制作一个shell脚本*.vbs,如下所示(快捷方式\u helper.vbs):

2) 使批处理脚本从批处理文件开始,如下所示:

path_to_vbs\shortcut_helper /target:"file_path\file.bat" /shortcut:"shortcut_name" /arg:"optional_arguments"
现在2)为您创建快捷方式(*.lnk),然后您可以将其移动到您喜欢的任何位置=)


但是要小心,*.vbs文件在某些情况下可能需要管理员权限。

以编程方式创建.lnk文件的方法是可以接受的解决方案吗?事实上,我正在使用批处理文件中的
mklink
来创建一些链接。我可以使用Cygwin的
mkshortcut
,甚至可以创建一个中间.cmd文件,该文件
start
s是实际的.cmd文件。然而,
mklink
将是自然的解决方案。是的,当双击通过
mklink
创建的任何内容时,无论是软的还是硬的,我都会看到一个
打开的
对话框。除非将链接创建为硬链接并为其提供.cmd或.bat扩展名,否则我能想到的唯一解决方案是创建一个.lnk文件,而不是一个符号链接。不过,它不必与cygwin的
mkshortcut
配合使用。这可以用vbscript来完成。看起来微软对文件链接没有注意
start x
也会打开记事本,运行
\x
表示找不到该命令。有趣的是,Windows上最简单的函数是如何不正常工作的。尽管
mklink
是人们期待已久的重要功能,但似乎只有单独的快捷方式文件才能提供工作文件链接。同意。好吧,如果您正在考虑制作一个.lnk文件而不是符号链接,请参阅本页了解想法。
path_to_vbs\shortcut_helper /target:"file_path\file.bat" /shortcut:"shortcut_name" /arg:"optional_arguments"