中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已完美解決]利用Mklink進行目錄點連接或文件符號鏈接
« [1] [2] [3] »
作者:
标题: [已完美解決]利用Mklink進行目錄點連接或文件符號鏈接 上一主题 | 下一主题
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 16 楼』:  re 15楼:

输入源文件时可以手工输入名称

[ Last edited by 000000000000000 on 2010-1-12 at 16:31 ]

2010-1-12 16:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 17 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 16:19:
输入源文件时可以手工输入

我想問的是如果手工輸入後不會被for %%a in ("%src:"=%") do set dest="%dest:"=%\%%~nxa"語句替換嗎。。
-----------------------------------
引用:BATHOME.net回貼
极端地问楼上
但要是一个文件根本就没有后缀怎么办呢?
(同时试答LZ“判斷輸入的是路徑還是文件”):

for /f "delims=" %i in ("只是名字无后缀 目录或文件待测 且有空格") do if not exist %~snxi\nul: echo 这才是文件

兰字是你输入或拖拽进去的变量,
红字是关键,nul:是虚设备
~S 解决目录或文件名中有空格的问题
這是BATHOME.net上達人回的貼我測試沒有擴展名的文件真的不行。。用上
for /f "delims=" %a in ("%src%") do if not exist %~snxa\nul: echo 这才是文件
後窗口一閃就沒了。。能修改下嗎。。
謝謝。。

2010-1-12 16:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 18 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 16:19:
输入源文件时可以手工输入名称

[ Last edited by 000000000000000 on 2010-1-12 at 16:31 ]

不行的源文件不能改名改了會找不到引用項
我的意思是%%~nxa能不能設成變量。如果有輸入就優先用輸入沒有就調用源文件的尾端文件名或目錄名

2010-1-12 16:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 19 楼』:  

刚才14楼写错了个词,把 src 写成了 scr。。现在改回去了。
----------------------------
可以直接输入名称啊,“%%~nxa”表示的是路径中的文件名及后缀名。

2010-1-12 16:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 20 楼』:  

手工输入,如何判断你输入的是 文件 还是 目录 ?

[ Last edited by 000000000000000 on 2010-1-12 at 16:51 ]

2010-1-12 16:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 16:46:
刚才14楼写错了个词,把 src 写成了 scr。。现在改回去了。
----------------------------
可以直接输入名称啊,“%%~nxa”表示的是路径中的文件名及后缀名。

[請輸入Mklink源文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\P h o  t o s"
[請輸入Link目標文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\New folder"\ff
Mklink /j "D:\Users\i - Copy\New folder\ff這裡本來是要等同於P h o  t o s的快捷方式的現在變成了上級目錄並因為沒有此目錄而出錯\P h o  t o s" "D:\Users\i - Copy\P h
o  t o s"
Press any key to continue . . .

2010-1-12 16:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 16:50:
手工输入,如何判断你输入的是 文件 还是 目录 ?

[ Last edited by 000000000000000 on 2010-1-12 at 16:51 ]

算了。。不搞那麼複雜了。。累人。。現在只想請大大幫著修正下如何處理沒有擴展名的文件還是調用Mklink命令
for /f "delims=" %i in ("只是名字无后缀 目录或文件待测 且有空格") do if not exist %~snxi\nul: echo 这才是文件
我換成
for /f "delims=" %%a in ("%src%") do if not exist %%~snxa\nul: echo 这才是文件
但是窗口一閃就沒了

2010-1-12 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 23 楼』:  

这个不行吗:

  Quote:
@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p dest=[請輸入Link目標文件路徑支持滑鼠拖拽]
set src="%src:"=%"
for %%a in (%src%) do set FolderPath="%dest:"=%\%%~nxa"
if exist %src%\ (echo Mklink /j %FolderPath% %SRC%) else echo Mklink %FolderPath% %SRC%
pause

if exist test\ (echo 是目录) else echo 是文件

2010-1-12 17:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 17:24:
这个不行吗:



if exist test\ (echo 是目录) else echo 是文件

可以了去掉ECHO

是我沒細看復制就用了。。今天 看了太多的文章腦子一團麻。。呵呵

謝謝大大

2010-1-12 17:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 25 楼』:  

[請輸入Mklink源文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\bin"
[請輸入Link目標文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\New folder"\ff如果這裡有時候要手工輸入而不使用截取的bin怎麼實現
The system cannot find the path specified.
Press any key to continue . . .

2010-1-12 17:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 26 楼』:  



  Quote:
Originally posted by iPoint at 2010-1-12 17:51:
[請輸入Mklink源文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\bin"
[請輸入Link目標文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\New folder"\ff如果這裡有時 ...

为什么不在 [請輸入Mklink源文件路徑支持滑鼠拖拽] 时手工输入?

2010-1-12 17:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 27 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 17:52:

为什么不在 [請輸入Mklink源文件路徑支持滑鼠拖拽] 时手工输入?

我只是要改鏈接指的名字如果改了源文件中的bin將鏈接到一個不存在的目錄或文件

@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p lnk=[請輸入Link目標文件路徑支持滑鼠拖拽]
set /p m=[請輸入Link目標名默認為源文件(目錄)名]如果這有輸入我希望實現%FolderPath%=%LNK%%M%的效果 IF還不會用請幫幫忙
set src="%src:"=%"
for %%a in (%src%) do set FolderPath="%lnk:"=%\%%~nxa"
if exist %src%\ (Mklink /j %FolderPath% %src%) else Mklink %FolderPath% %src%
pause

2010-1-12 18:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 28 楼』:  

手工输入的算文件还是目录?

2010-1-12 18:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『第 29 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-1-12 18:10:
手工输入的算文件还是目录?

以源為主源是.TXT文件那麼%M%就是.TXT
如果源是目錄%M%也是目錄

[ Last edited by iPoint on 2010-1-12 at 18:23 ]

2010-1-12 18:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 30 楼』:  


@echo off
set "m="
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p lnk=[請輸入Link目標文件路徑支持滑鼠拖拽]
set /p m=[請輸入Link目標名默認為源文件(目錄)名]
set src="%src:"=%"
if defined m (
    set FolderPath="%lnk:"=%\%m:"=%"
) else (
    for %%a in (%src%) do set FolderPath="%lnk:"=%\%%~nxa"
)
if exist %src%\ (Mklink /j %FolderPath% %src%) else Mklink %FolderPath% %src%
pause


2010-1-12 18:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: