中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]win98把重定向内容输出至变量(当前路径至变量)?
作者:
标题: [已结]win98把重定向内容输出至变量(当前路径至变量)? 上一主题 | 下一主题
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『楼 主』:  [已结]win98把重定向内容输出至变量(当前路径至变量)?

这样的代码:
set oo=c:\lo.txt
cd > %oo%
是把重定向输出到了变量所指的外部文件,而不是变量本身,如何写才能输出到变量本身,以上例为例,如何使输出到%oo%变量中,即最后的结果是%oo%存放的是当前路径,内容和%cd%变量一样.

也许有人问为什么不直接用%cd%变量呢,因为需要跨平台win98/win2000,而%cd%变量是winnt平台专有,win98是没有的,在win98下是空.而cd命令则两个平台都有,用cd命令则可确保万无一失,双栖

[ Last edited by dejoy on 2008-11-15 at 10:44 ]

2008-11-9 21:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

重定向不能直接用来给变量赋值



2008-11-9 22:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 3 楼』:  

那请教版本 ,应该如何把CD输出内容至一个变量中, 不使用系统自带的%cd%变量?

2008-11-9 22:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 4 楼』:  

for /f "delims=" %%i in ('cd') do (set "oo=%%i")

不知98下行不行。

2008-11-9 22:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 5 楼』:  

for /f "delims=" %%i in ('cd') do (set "oo=%%i")
>>你的方法在xp下行,不过在xp下可以直接用%cd%就行了

呵呵 我看过,  win98下支持for命令,不过没有delims参数,据我所知,在win98下肯定支持的是cd命令,并且CD输出的就是当前路径,只是不知如何把它放到变量中.

以下是我的代码,根据执行的不同的操作系统执行不同的代码,经测试可以区分执行,只是不知在win98下的代码应怎么写:

rem {%OS%是一个winnt中有而win98中没有的内置变量
if NOT {%OS%} == {} goto winnt

:win98
rem 怎么写?
rem set savedcd = ??
goto ENDOSDECTED

:winnt
set savedcd = %cd%

:ENDOSDECTED

[ Last edited by dejoy on 2008-11-9 at 22:57 ]

2008-11-9 22:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

手上没有Win98环境,无法测试。
@echo off
>a.txt cd
set /p oo=<a.txt
echo %oo%
pause




2008-11-10 10:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
BC
中级用户




积分 338
发帖 175
注册 2007-10-21
状态 离线
『第 7 楼』:  

re:hat
应该不能,98下set没有/p

在 SET 命令中添加了两个新命令行开关:

    SET /A expression
    SET /P variable=[promptString]



C:\
C:\Del BC
2008-11-10 13:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 8 楼』:  

re hat,win98下是不能 ,win98下 set 没有任何可用参数

2008-11-10 16:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 9 楼』:  

继续呼叫

2008-11-12 00:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  

我记得有一个DOS下获取文本首行内容的帖子,但找不到在哪里了。
用 string.com 能否满足要求呢?

string.com可以去这里下载:批处理室附件收集专用帖



2008-11-12 09:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terrytong
中级用户





积分 240
发帖 115
注册 2008-3-10
状态 离线
『第 11 楼』:  

strings variable=read sourcefile, n          :n 代表第N行

[ Last edited by terrytong on 2008-11-12 at 11:27 ]

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





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 12 楼』:  

这个strings好强大,看来非要使用第三方工具

[ Last edited by dejoy on 2008-11-14 at 00:52 ]

2008-11-14 00:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 13 楼』:  

发现一个win9x的工具nset,就是实现此帖功能的,在win9x下把stdin或文件的内容输入到变量
Using STDIN, examples:

by PIPE:      CD | NSET SDIR=$1         (SDIR=current directory)

from a file:  NSET X=$3 < some.txt      (X=3rd word from some.txt)

keyboard:     NSET IN=$0                (IN=input up to CR)

里面好东东不少,又发现几个
VARGET.COM 把INI文件的内容读到变量
VARSET.TXT 把文件信息,如文件名,大小,目录内容等读到变量
XCP 增强的copy
Xset 增强的set等

[ Last edited by dejoy on 2008-11-14 at 01:50 ]

2008-11-14 00:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dejoy
初级用户





积分 76
发帖 64
注册 2008-4-24
状态 离线
『第 14 楼』:  

发现一个前人所写的专门就是win98下实现此功能的bat,无需借助第三方工具
98下获取当前路径.bat
::getvar.bat
@if [%2]==[] goto help
@if [%1]==[/?] goto help
@if [%1]==[/h] goto help
@if [%1]==[invoke] prompt set %2=%3&#36;_
@if [%1]==[invoke] goto end
@if [%temp%]==[] set temp=c:
@%comspec% /c %0 invoke %1 &#36;%2>%TEMP%\tt.bat
@echo off
call %TEMP%\tt.bat
if "%3"=="" DEL %TEMP%\tt.bat
set CMDLINE=
goto end
:help
@echo off
echo.
echo    GET.BAT V1.0  Lydong 030625
echo    ===============================
echo    get curver [Command]
echo    get [/?] or [/h]
echo.
echo    eg: get time t
echo        get dosver v
echo.
echo    Command:
echo          T   Current time
echo          D   Current date
echo          P   Current drive and path
echo          V   Windows version number
echo          N   Current drive
echo    ===============================
echo.
:end
exit

:: GetVar.bat - Get from ';PROMPT'; text to environment variable
:: Will Sort - 10:29 2005-7-16 - CMD@XP/COMMAND@Win98/MSDOS6.22
@echo off
echo exit | %comspec% /k prompt set %1=%2&#36;_:: > _GetVar.bat
call _GetVar.bat
for %%f in (_GetVar*.*) do del %%f
但无法运行,一运行出退出了,请教大大

[ Last edited by dejoy on 2008-11-18 at 17:57 ]

附件 1: 98下获取当前路径.rar (2008-11-15 10:46, 1.62 K,下载次数: 6)
2008-11-15 10:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: