中国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進行目錄點連接或文件符號鏈接 上一主题 | 下一主题
iPoint
初级用户





积分 22
发帖 26
注册 2009-12-8
状态 离线
『楼 主』:  [已完美解決]利用Mklink進行目錄點連接或文件符號鏈接

BAT中如何截取第一个输入路径的最后目录名加在第二个输入路径的后边使用
set /p i=c:\fee\mm
set /p l=d:\jk
如何能让%l%变量值变成d:\jk\mm


測試完美謝謝000000000000000的熱心幫助。。辛苦大大啦 。。


在WIN7中利用Mklink進行目錄點連接或文件符號鏈接的批處理支持帶空格目錄
以下代碼出自000000000000000
@echo off
set "m="
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p lnk=[請輸入Link目標文件路徑支持滑鼠拖拽]
set /p m=[請輸入Link目標名默認同名源文件(目錄)]
set src="%src:"=%"
if defined m (
    set _path="%lnk:"=%\%m:"=%"
    if not exist %src%\ (
        for %%a in (%src%) do (
            for %%b in ("%m:"=%") do (
                if "%%~xb" neq "%%~xa" set _path="%lnk:"=%\%m:"=%%%~xa"
            )
        )
    )
) else for %%a in (%src%) do set _path="%lnk:"=%\%%~nxa"
if exist %src%\ (Mklink /j %_path% %src%) else Mklink %_path% %src%
pause
[ Last edited by iPoint on 2010-1-14 at 15:23 ]

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





积分 46
发帖 39
注册 2008-11-2
状态 离线
『第 2 楼』:  


for %%i in (%i:\= %) do (set l=%l%\%%i)


2010-1-11 19:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by clamber at 2010-1-11 19:23:
for %%i in (%i:\= %) do (set l=%l%\%%i)

如果最后一个目录名中间有空格呢,如c:\a\b\c\d e



批处理之家新域名:www.bathome.net
2010-1-11 20:09
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
iPoint
初级用户





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



  Quote:
Originally posted by bat-zw at 2010-1-11 20:09:


如果最后一个目录名中间有空格呢,如c:\a\b\c\d e

對呀有空格的目錄名怎麼弄

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





积分 128
发帖 122
注册 2009-9-21
状态 离线
『第 5 楼』:  


@echo off
set i=c:\aa\bb\c d
set l=d:\ff
set i=%i: =_%
for %%i in (%i:\= %) do (set l=%l%\%%i)
set l=%l:_= %
echo %l%
pause
这样就行了

   此帖被 +1 点积分    点击查看详情   
评分人:【 BowAngel 分数: +1  时间:2010-1-12 01:15


2010-1-11 23:39
查看资料  发送邮件  发短消息 网志  OICQ (274997087)  编辑帖子  回复  引用回复
BowAngel
新手上路





积分 4
发帖 4
注册 2009-12-23
状态 离线
『第 6 楼』:  

确实可以啊

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





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



  Quote:
Originally posted by jarry0932 at 2010-1-11 23:39:
@echo off
set i=c:\aa\bb\c d
set l=d:\ff
set i=%i: =_%
for %%i in (%i:\= %) do (set l=%l%\%%i)
set l=%l:_= %
echo %l%
pause
这样就行了

[請輸入Mklink源文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\P h o  t o s"

[請輸入Link目標文件路徑支持滑鼠拖拽]"D:\Users\i - Copy\New folder"
"D:\Users\i - Copy\New folder"\"D: Users i - Copy P h o  t o s<P這裡多了D: Users i - Copy >"
Press any key to continue . . .
不行或

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





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


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


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





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



  Quote:
Originally posted by 000000000000000 at 2010-1-12 13:02:
[code]@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p dest=[請輸入Link目標文件路徑支持滑鼠拖拽]
for %%a in ("%src:"=%") do set Folder ...

感謝樓上。。如果接下來我要判斷源是文件就調用Mklink
如果是目錄就調用Mklink /j 怎麼寫。。

謝謝

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





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


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


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





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



  Quote:
Originally posted by 000000000000000 at 2010-1-12 13:50:
[code]@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p dest=[請輸入Link目標文件路徑支持滑鼠拖拽]
for %%a in ("%src:"=%") do set Folder ...

大大這段代碼運行後什麼都沒有
我的意思是源是文件就調用Mklink命令鏈接%FolderPath% %SRC%
源是目錄就調用Mklink /j 命令鏈接%FolderPath% %SRC%

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





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


if exist %src%\ (echo Mklink /j) else echo Mklink
上句就是判断是文件,还是目录的,改成你的具体命令就行了。即:
if exist %src%\ (Mklink /j "%FolderPath%" "%SRC%") else Mklink "%FolderPath%" "%SRC%"
[ Last edited by 000000000000000 on 2010-1-12 at 14:30 ]

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





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

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

去掉變量前後的“”後在WIN7下運行正常。。謝謝大大

[ Last edited by iPoint on 2010-1-12 at 15:09 ]

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





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



  Quote:
Originally posted by iPoint at 2010-1-12 14:38:
@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p dest=[請輸入Link目標文件路徑支持滑鼠拖拽]
for %%a in ("%src:"=%") do set FolderPath=& ...

如果输入带空格的源路径而不加引号,貌似会出错。

建议改成:
@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
[ Last edited by 000000000000000 on 2010-1-12 at 16:42 ]

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





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



  Quote:
Originally posted by 000000000000000 at 2010-1-12 14:58:

如果输入带空格的源路径而不加引号,貌似会出错。

建议改成:
[code]@echo off
set /p src=[請輸入Mklink源文件路徑支持滑鼠拖拽]
set /p dest=[請輸入Lin ...

我還想問下如果有時候我不想以源文件名命名符號鏈接就是%%~nxa能手工輸入嗎
就是在set /p dest=[請輸入Link目標文件路徑支持滑鼠拖拽]我拖入個D:\FEE然後手工輸入FF
%FolderPath%能=D:\FEE\FF嗎

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


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



论坛跳转: