无忧启动论坛

标题: 在PE桌面建立原磁盘上操作系统My Documents文件夹的快捷方式 [打印本页]

作者: jiudun    时间: 2007-11-28 17:31
标题: 在PE桌面建立原磁盘上操作系统My Documents文件夹的快捷方式
目的很简单:
因为pe启动后占用C盘符,想利用批处理打开位于D:\Documents and Settings\用户名\下的"My Documents"文件夹.
试了很多种办法都不成功
explorer d:\Documents and Settings\%UserProfile%\My Documents---失败
explorer D%UserProfile:~1%\My Documents---失败(打开的是d:\Documents and Settings\Default User\My Documents)


不要说这样做的意义不大或者根本没有意义,我只是想解决这个问题.


修改一下标题,希望有高人看到,提供点思路.

[ 本帖最后由 jiudun 于 2007-11-30 11:22 PM 编辑 ]
作者: yinyuan    时间: 2007-11-28 17:41
打开文件夹用

@ECHO off

cd “D:\Documents and Settings\用户名\My Documents”
作者: jiudun    时间: 2007-11-28 17:43
这个批处理放在PE的桌面上,双击就可以打开位于D盘系统的"我的文档",方便了拷贝文件.
Windows用户在C盘创建的文件一般情况位于Documents and Settings\用户名\My Documents\
                                                                                                       \桌面\
                                                                                                       \收藏夹\

如果在PE的桌面上放置3个批处理文件,分别打开这3个文件夹,方便了已瘫痪系统的文件拷贝
作者: jiudun    时间: 2007-11-28 17:45
原帖由 yinyuan 于 2007-11-28 05:41 PM 发表
打开文件夹用

@ECHO off

cd “D:\Documents and Settings\用户名\My Documents”

用户名不是固定的,不知道用什么变量.
作者: lxl1638    时间: 2007-11-28 17:45
请问你如何执行那个CMD屁处理?
用鼠标去点那个屁处理文件或快捷方式么?不如直接用鼠标去双击那个目录算了。
作者: chenall    时间: 2007-11-28 17:48
start "我的文档" "d:\Documents and Settings\用户名\My Documents"

但是你不知 用户名 是什么所以基本上是不能全自动的。
必须确认用户名是什么或是有什么关联或特点
作者: lxl1638    时间: 2007-11-28 17:53
真是的,PE中有强大功能的PECMD不用,总是搞什么屁处理,PECMD可以将整个目录链接到[开始]菜单上,把硬盘原来的“我的文档”作为一个菜单项!
作者: jiudun    时间: 2007-11-28 17:54
"用户名不确定"问题就出在这里,如果确定的话直接弄个快捷方式,把路径改一下就OK了.
作者: jiudun    时间: 2007-11-28 17:57
原帖由 lxl1638 于 2007-11-28 05:53 PM 发表
真是的,PE中有强大功能的PECMD不用,总是搞什么屁处理,PECMD可以将整个目录链接到[开始]菜单上,把硬盘原来的“我的文档”作为一个菜单项!

这个我知道,我只是对于出现的这个问题纳闷.
作者: stwcb2007    时间: 2007-11-28 18:04
鸡肋类问题
虽然不清楚
但也不想研究
飘过飘过~~~
作者: stwcb2007    时间: 2007-11-28 18:09
仔细想一下
把用户名写入变量应该也可以
只是如果用户名是中文的
那么在DOS窗口下要输入中文就比较麻烦了
飘过飘过~~~
衣袂飘飘o(∩_∩)o...哈哈
作者: pseudo    时间: 2007-11-28 22:30
标题: 呵呵,chenall兄才是Batch高手
原帖由 chenall 于 2007-11-28 05:48 PM 发表
start "我的文档" "d:\Documents and Settings\用户名\My Documents"

但是你不知 用户名 是什么所以基本上是不能全自动的。
必须确认用户名是什么或是有什么关联或特点

试试这个:
@echo off
set P=C:\Documents and Settings
FOR /F %%i In ('dir /B /O-D "%P%"') DO (
    if exist "%P%\%%i\桌面" (
        set WINUSER=%%i
        goto :nextStep
    )
)
:nextStep
echo 用户名之一是%WINUSER%
pause


必要时可把其中的C:\换成D:\
作者: nn2nn    时间: 2007-11-29 09:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: secowu    时间: 2007-11-29 17:42
不如直接用鼠标去双击那个目录算了。
作者: jiudun    时间: 2007-11-29 21:23
原帖由 pseudo 于 2007-11-28 10:30 PM 发表

试试这个:


必要时可把其中的C:\换成D:\

这个不错,检测用户名成功,好思路!
作者: nn2nn    时间: 2007-11-29 21:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: jiudun    时间: 2007-11-29 21:31
还有一种思路:搜索D:\Documents and Settings下的所有目录,找出符合条件的并打开,(条件不知道该限定为什么?文件夹内文件数量多少?还是文件夹占用空间的大小?还是别的什么?)

请原谅我的"脱裤放屁",我只是个充满好奇心的,喜欢问的人.
作者: hainanmm    时间: 2007-11-29 21:35
不能定位盘符和用户名是最大的问题。
作者: jiudun    时间: 2007-11-29 21:36
@echo off
for /f "delims=" %%a in ('dir /s /b /ad D:\*') do call :slz "%%a"
echo explorer.exe "%folder%"
pause

:slz
set xxx=%~1
if not defined xxx goto:eof
if not defined folder set "folder=%~1"
for /f "tokens=1* delims= " %%i in ('dir /-c "%~1"^|find "个文件"') do set most=%%i
if not defined most1 set most1=%most%
if "%most%" gtr "%most1%" set "most1=%most%" & set "folder=%~1"
echo "%~1" 有%most%个文件!
goto:eof

这个是以文件夹内文件的数量为条件的,这里的路径是D:\,少了Documents and Settings,给老大们看看,有什么问题没有?
作者: jiudun    时间: 2007-11-29 21:44
虽然我没实验,但是一个问题会出现,搜索比较的时间远比亲自用鼠标打开要找的文件夹要慢.(估计又有人说这是脱裤放屁)
作者: chenall    时间: 2007-11-29 22:19
晕死了,干脆就将找到的全部打开好了。
一般情况下,里面只有一个用户是有用的,其它都是系统内置的没有用。
所以只需检测用户文件夹里面有My Documents这个目录就可以了。
简单贴一个吧,希望对你有用。
自己将

set homepath=c:\Documents and Settings
改成你的目录。

但是有时候我的文档不一定是在这个目录下的。所以.....

基本上是无用的。


@echo off
set homepath=c:\Documents and Settings
for /f "usebackq delims=:" %%i in (`dir/ad/b "%homepath%"`) do if exist "%homepath%\%%i\My Documents" start "%%i的文档" "%homepath%\%%i\My Documents"

[ 本帖最后由 chenall 于 2007-11-29 11:47 PM 编辑 ]
作者: lxl1638    时间: 2007-11-29 23:22
"我的文档"目录是可变的,很难通用,至少本人的就是这样,"我的文档"不是在C:盘,也不是在 Documents and Settings 目录。
作者: nn2nn    时间: 2007-11-30 10:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: chenall    时间: 2007-11-30 13:12
原帖由 nn2nn 于 2007-11-30 10:26 AM 发表
我的文档里
desktop.ini 内容
[DeleteOnCopy]
Owner=SYSTEM
Personalized=5
PersonalizedName=My Documents


不可能做到通用的。
因为我的文档位置是可以变的,
虽然可以通过全盘搜索来找到,但是效率太低了,还不如动动手找出来更方便。
作者: jiudun    时间: 2007-11-30 23:12
不放弃,仍然在寻找解决的思路和办法.希望大家给点思路.
作者: lxl1638    时间: 2007-12-1 12:08
原帖由 jiudun 于 2007-11-30 11:12 PM 发表
不放弃,仍然在寻找解决的思路和办法.希望大家给点思路.


根本没有通用的办法,如本人的机子,设置了两个用户,两个用户的"我的文档"都不在C:盘,包括 Documents and Settings 目录都不在C:盘,
将 Documents and Settings 放在C:盘是大菜的方法,一不小心,重将系统所有的文档都消失。
如果遇到这种情况,除非你将硬盘上的所有文件搜索一次!

未命名.PNG (53.17 KB, 下载次数: 28)

未命名.PNG

作者: nn2nn    时间: 2007-12-1 12:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: chenall    时间: 2007-12-1 14:03
不知楼主有没有试过我21楼的代码呢?

如果你的目录是固定的就可以用的。

c:\Documents and Settings

d:\Documents and Settings
或.....
作者: chenall    时间: 2007-12-1 16:23
突然想到一个思路。或许可行。
需要外部命令reg.exe和setx.exe

具体请参考以下批处理。

        chenall 发表于:  2007-12-01  13:19

作者: pseudo    时间: 2007-12-1 16:57
标题: 重大贡献!
原帖由 chenall 于 2007-12-1 04:23 PM 发表
突然想到一个思路。或许可行。

REG LOAD HKLM\_USER_ "%ProPath%\%*\ntuser.dat" >nul 2>nul

看到这句非同小可,茅塞顿开,许多难题可能由此突破!
作者: jiudun    时间: 2007-12-1 17:17
一会去测试,回来给大家报告.
作者: lxl1638    时间: 2007-12-1 19:56
如果我的文档文件夹不是在  Documents and Settings 这样的目录中,上面的批处理也找不到。

较好的办法:加载远程系统的 HIVE,从远程系统的注册表数据中找"我的文档",找到的数据最多只有一个字的差别----盘符的差别(因为PE中的盘符可能与原系统的不同),然将盘符的第一个字母依次从C替换到Z,如果发现存在这样的目录,基本上就可以确定"我的文档"了。
作者: lxl1638    时间: 2007-12-1 20:02
呵呵,又来一个问题:
远程系统的目录也是不确定的,一般是 Windows、也有用 WinXPSP2、WinXP、WInNT、WIN200的,反正很难有通用的办法了。
作者: chenall    时间: 2007-12-1 20:40
原帖由 lxl1638 于 2007-12-1 07:56 PM 发表
如果我的文档文件夹不是在  Documents and Settings 这样的目录中,上面的批处理也找不到。

较好的办法:加载远程系统的 HIVE,从远程系统的注册表数据中找"我的文档",找到的数据最多只有一个字的差别----盘 ...


这个和文档在哪个位置已经没有多大关系了,因为是从原系统的用户注册表中得到的路径。

而用户的注册表文件一般情况下是固定的(至少从2K到2K3都是一样的)只是系统盘的盘符不确定。
用户的注册表文件位置.
\Documents and Settings\用户名\NTUSER.DAT

所以基本上是行得通的。

原帖由 jiudun 于 2007-12-1 05:17 PM 发表
一会去测试,回来给大家报告.


必须在PE系统中测试,否则是不行的。

可以挂上nn2nn 的公共模块,里面就已经有REG.EXE和setx.exe了。

我就是用这个环境测试的。

[ 本帖最后由 chenall 于 2007-12-1 08:49 PM 编辑 ]
作者: lxl1638    时间: 2007-12-1 20:49
原帖由 chenall 于 2007-12-1 08:40 PM 发表


这个和文档在哪个位置已经没有多大关系了,因为是从原系统的用户注册表中得到的路径。

而用户的注册表文件一般情况下是固定的(至少从2K到2K3都是一样的)只是系统盘的盘符不确定。
用户的注册表文件位 ...


NO,NO,你看一下上一页本人帖出的图,"我的文档"就不在这样的目录下。

最简单的方面可以试验,或者很多人装完系统后都这样处理:

在桌面"我的文档"==>右键菜单==>属性,可以把"我的文档"移动任何位置的目录中。
作者: chenall    时间: 2007-12-1 20:56
原帖由 lxl1638 于 2007-12-1 08:49 PM 发表


NO,NO,你看一下上一页本人帖出的图,"我的文档"就不在这样的目录下。

最简单的方面可以试验,或者很多人装完系统后都这样处理:

在桌面"我的文档"==>右键菜单==>属性,可以把"我的文档"移动任何位置 ...


这个是可以移没错,但是注册表里面的值会跟着变的。不管我的文档移到哪里,注册表里面都会有记录。

可以试验下。

先打开注册表以下键,查看看PERSONAL的值。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
然后移动我的文档的位置

再看看以上值(移动后需重新打开注册表或刷新一下注册表),就可以看到,这个值就是新的我的文档的路径。

我电脑中的 我的文档 位置是d:\chenall的文档。

在PE系统中测试,可以找得到。

当然了以上只是当前用户的值。

其它用户的值,在HKEY_USERS里面



,啊我没注意看图,
你的系统中的\Documents and Settings
在H:
这个也是可改的。看来,还有问题。

[ 本帖最后由 chenall 于 2007-12-1 09:00 PM 编辑 ]
作者: chenall    时间: 2007-12-1 21:14
再看了下
注册表位置。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
记录着这些配置文件的位置。

可以从以下文件得到
%windir%\system32\config\system

再一个就是%windir%的位置了,这个也是可变的。

这个值在boot.ini中可以找到。

所以如果要做成通用的。就必须从boot.ini查起。

眼下是没有必要了。呵呵,我也懒得再动手。
作者: z640919a    时间: 2007-12-1 21:29
我看只有一种办法,把PE中桌面上的我的文档lnk隐藏,然后创建一个XP系统指向某个用户的我的文档lnk.
作者: ynxmaifmsguxmft    时间: 2007-12-1 22:19
受楼上帖子 的启发,来个简单的吧,[fly]如果只是想在PE桌面有一个与硬盘相关联的文件夹[/fly],在PECMD里加上
md d:\PE硬盘文档
PECMD LINK %USERPROFILE%\桌面\PE硬盘文档,d:\PE硬盘文档
是不是可以呢?
再美化一下,加上,,<图标路径>就不是文件夹的图标了。
让各位高手都是见笑了。
它的缺点是不能与XP中的“我的文档”同时共享(但XP下同样也可以使用),优点是每次存在这个文件夹里的文件都可以在下次使用PE时方便的调用。
楼上提到的删除桌面上“我的文档”方法不妥,因为没有硬盘的用户往哪儿放东西呀?存在桌面上终归不是好办法,留着也无妨。不用担心在没有硬盘的情况下也会多出“PE硬盘文档”这个图标,没了硬盘就算有创建硬盘文件夹和桌面快捷方式的命令也不能创建!

[ 本帖最后由 ynxmaifmsguxmft 于 2007-12-1 10:55 PM 编辑 ]
作者: lxl1638    时间: 2007-12-1 22:42
原帖由 chenall 于 2007-12-1 09:14 PM 发表
再看了下
注册表位置。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
记录着这些配置文件的位置。

可以从以下文件得到
%windir%\system32\config\system

再一个就是 ...


在PE中,%windir%是PE的 X:盘,不是远程系统的根。

在PE中的注册表是PE的,PE的注册表不含有硬盘系统的注册表数据,除非你加载远程系统的 HIVE (注册表单元),就是本人上面已说过的问题,但加载远程 HIVE 之前必须确定远程系统在路径,又回到了路径问题了,很多机子的系统目录不是 Windows的,如 WinNT、Win200、WinXPSP2、Win-XP等。
作者: lxl1638    时间: 2007-12-1 22:56
总之,很难找到好的方法,本人机子的所有启动文件(NTLDR、BOOT.INI等)都在隐藏分区,要找BOOT.INI不容易,分析BOOT.INI更难(多启动菜单)。
作者: 123    时间: 2007-12-1 23:26
我的文档里有一个desktop.ini,全盘搜索这个文件,为提高速度可以用扇区方式
作者: lxl1638    时间: 2007-12-2 00:37
很多目录都有 desktop.ini 文件。
作者: 123    时间: 2007-12-2 00:42
回楼上的,难道你就不会看内容是否相同?
作者: lxl1638    时间: 2007-12-2 01:25
内容就然不同,但全盘查找这个文件,还要分析它不可取。
作者: z640919a    时间: 2007-12-2 15:54
原帖由 ynxmaifmsguxmft 于 2007-12-1 10:19 PM 发表
受楼上帖子 的启发,来个简单的吧,如果只是想在PE桌面有一个与硬盘相关联的文件夹,在PECMD里加上
md d:\PE硬盘文档
PECMD LINK %USERPROFILE%\桌面\PE硬盘文档,d:\PE硬盘文档
是不是可以呢?
再美化一下, ...

那就直接用bat:     start "" "d:\PE硬盘文档"
作者: chenall    时间: 2007-12-3 01:38
原帖由 z640919a 于 2007-12-2 03:54 PM 发表

那就直接用bat:     start "" "d:\PE硬盘文档"


已经脱离主题了,
楼主要求的是,访问原硬盘的我的文档.

当然不可能预先知道他的文档在哪里.
作者: 阿非    时间: 2007-12-3 09:05
看了,感觉没有必要解决,这个不是大问题,问题有点无聊。
PS,如果是自己的机子上,自己知道在那里,很简单就解决了
如果是他人机子上,我的文档不是固定的,机主可以随便放在哪里都行。另外还要考虑多系统,多用户的问题。
123MM说可以根据desktop.ini 的内容来判断,但有的里面是没有desktop.ini 的,比如我的机子上的,我把他删除了,你怎么来判断?
作者: avonpsb    时间: 2007-12-4 21:09
呵呵,受益良多。怎么判断有没必要呢?按楼上说的WINPE都没必要去改进了哈。
作者: chenall    时间: 2007-12-4 21:54
lz呢?

怎么没有回来报告一下结果?

还是解决了就走人.
作者: jiudun    时间: 2007-12-6 02:12
多种方法都尝试过了,能找到的是慢,快的又找不准.




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3