中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 05:58
48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » for中的awk FS问题
可打印版本  809 / 3
第1楼 pillow 发表于 2007-10-25 10:48
初级用户 发帖 82 积分 196
for中的awk FS问题
原目的是希望將AD中4周未登陸賬號導出來,並去掉多餘信息,控制輸出格式。

使用命令如下:

for /F "tokens=*" %i in ('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"\"; print \"UserName\"} {print $2}"') do echo %i

()中的部分:
dsquery user "LDAP path ou" -inactive 4 | gawk "BEGIN{ FS=\"\"; print \"UserName\"} {print $2}"
可以產生正確的需處理文本
"LDAP path ou"代表account所在的OU,當不加AWK部分時,輸出是我所需要的,即如下形式:
"CN=Jaks Sen(張三_London),LDAP path ou"


需求是將=和(中間的部分 Jaks Sen 取出,且改為Jaks_Sen。
但實際執行時的結果卻只有Sen這部分,即 FS=\"\" 這部分並未生效。

請教是否AWK放進FOR之後,還有什麼需要注意的地方?

[ Last edited by pillow on 2007-10-25 at 11:01 AM ]
第2楼 zhclsy 发表于 2007-10-25 11:32
初级用户 发帖 34 积分 83
回家测试一下!呵呵。
第3楼 pillow 发表于 2007-10-25 11:39
初级用户 发帖 82 积分 196
但實際執行時的結果卻只有Sen這部分,即 FS=\"[=(,]\" 這部分並未生效。

对这句纠正一下,不能说完全未生效,因为从结果来看是在以(和空格为分隔符,而不是= ( ,这三个
第4楼 pillow 发表于 2007-10-26 14:37
初级用户 发帖 82 积分 196
若我把这一段生成的txt文件做为fileset让for执行,就能得到我需要的东西。
真想不通……
('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"')
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023