Board logo

标题: [已结]win98把重定向内容输出至变量(当前路径至变量)? [打印本页]

作者: dejoy     时间: 2008-11-9 21:57    标题: [已结]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 ]
作者: HAT     时间: 2008-11-9 22:05
重定向不能直接用来给变量赋值
作者: dejoy     时间: 2008-11-9 22:12
那请教版本 ,应该如何把CD输出内容至一个变量中, 不使用系统自带的%cd%变量?
作者: balinger     时间: 2008-11-9 22:29
for /f "delims=" %%i in ('cd') do (set "oo=%%i")

不知98下行不行。
作者: dejoy     时间: 2008-11-9 22:46
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 ]
作者: HAT     时间: 2008-11-10 10:46
手上没有Win98环境,无法测试。
@echo off
>a.txt cd
set /p oo=<a.txt
echo %oo%
pause

作者: BC     时间: 2008-11-10 13:18
re:hat
应该不能,98下set没有/p

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

    SET /A expression
    SET /P variable=[promptString]
作者: dejoy     时间: 2008-11-10 16:44
re hat,win98下是不能 ,win98下 set 没有任何可用参数
作者: dejoy     时间: 2008-11-12 00:03
继续呼叫
作者: HAT     时间: 2008-11-12 09:59
我记得有一个DOS下获取文本首行内容的帖子,但找不到在哪里了。
用 string.com 能否满足要求呢?

string.com可以去这里下载:批处理室附件收集专用帖
作者: terrytong     时间: 2008-11-12 11:18
strings variable=read sourcefile, n          :n 代表第N行

[ Last edited by terrytong on 2008-11-12 at 11:27 ]
作者: dejoy     时间: 2008-11-14 00:45
这个strings好强大,看来非要使用第三方工具

[ Last edited by dejoy on 2008-11-14 at 00:52 ]
作者: dejoy     时间: 2008-11-14 00:56
发现一个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 ]
作者: dejoy     时间: 2008-11-15 10:46
发现一个前人所写的专门就是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)