|
iPoint
初级用户
 
积分 22
发帖 26
注册 2009-12-8
状态 离线
|
『楼 主』:
[已完美解決]利用Mklink進行目錄點連接或文件符號鏈接
使用 LLM 解释/回答一下
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=
set /p lnk=
set /p m=
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
状态 离线
|
|
2010-1-11 19:23 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
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 |
|
|
iPoint
初级用户
 
积分 22
发帖 26
注册 2009-12-8
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
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 楼』:
使用 LLM 解释/回答一下
@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
这样就行了
|
|
2010-1-11 23:39 |
|
|
BowAngel
新手上路

积分 4
发帖 4
注册 2009-12-23
状态 离线
|
|
2010-1-12 01:16 |
|
|
iPoint
初级用户
 
积分 22
发帖 26
注册 2009-12-8
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
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
这样就行了
"D:\Users\i - Copy\P h o t o s"
"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 楼』:
使用 LLM 解释/回答一下
@echo off
set /p src=
set /p dest=
for %%a in ("%src:"=%") do set FolderPath="%dest:"=%\%%~nxa"
echo %FolderPath%
pause
|
|
2010-1-12 13:02 |
|
|
iPoint
初级用户
 
积分 22
发帖 26
注册 2009-12-8
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
Originally posted by 000000000000000 at 2010-1-12 13:02:
@echo off
set /p src=
set /p dest=
for %%a in ("%src:"=%") do set Folder ...
感謝樓上。。如果接下來我要判斷源是文件就調用Mklink
如果是目錄就調用Mklink /j 怎麼寫。。
謝謝
|
|
2010-1-12 13:24 |
|
|
000000000000000
初级用户
 
积分 49
发帖 42
注册 2009-11-26
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
@echo off
set /p src=
set /p dest=
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 楼』:
使用 LLM 解释/回答一下
Originally posted by 000000000000000 at 2010-1-12 13:50:
@echo off
set /p src=
set /p dest=
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楼:
使用 LLM 解释/回答一下
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 楼』:
使用 LLM 解释/回答一下
@echo off
set /p src=
set /p dest=
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 楼』:
使用 LLM 解释/回答一下
Originally posted by iPoint at 2010-1-12 14:38:
@echo off
set /p src=
set /p dest=
for %%a in ("%src:"=%") do set FolderPath=& ...
如果输入带空格的源路径而不加引号,貌似会出错。
建议改成:
@echo off
set /p src=
set /p dest=
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 楼』:
使用 LLM 解释/回答一下
Originally posted by 000000000000000 at 2010-1-12 14:58:
如果输入带空格的源路径而不加引号,貌似会出错。
建议改成:
@echo off
set /p src=
set /p dest=
我還想問下如果有時候我不想以源文件名命名符號鏈接就是%%~nxa能手工輸入嗎
就是在set /p dest=我拖入個D:\FEE然後手工輸入FF
%FolderPath%能=D:\FEE\FF嗎
|
|
2010-1-12 15:07 |
|