|
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
状态 离线
|
|
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$_
@if [%1]==[invoke] goto end
@if [%temp%]==[] set temp=c:
@%comspec% /c %0 invoke %1 $%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$_:: > _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 |
|