Windows cmd别名,用于打印出文件夹cygwin的大小

Windows cmd别名,用于打印出文件夹cygwin的大小,windows,cmd,cygwin,alias,doskey,Windows,Cmd,Cygwin,Alias,Doskey,我目前正试图弄清楚如何准确地生成允许管道的Doskey别名 我想收集文件夹大小(kB) 我试过了 alias dirsize=du-p-c-a-b$1 | grep total | awk'{print'文件夹有:“$1”kB”}” 但我只是得到了输出 文件夹有:kB 当我使用 dirsize=du -P -c -a -b $1 | grep total 这让我抓狂 C:\>dirsize Temp 1364201 total 但是我现在怎么使用awk管道呢 我做错了什么 doskey

我目前正试图弄清楚如何准确地生成允许管道的Doskey别名

我想收集文件夹大小(kB)

我试过了

alias dirsize=du-p-c-a-b$1 | grep total | awk'{print'文件夹有:“$1”kB”}”

但我只是得到了输出

文件夹有:kB

当我使用

dirsize=du -P -c -a -b $1 | grep total
这让我抓狂

C:\>dirsize Temp
1364201 total
但是我现在怎么使用awk管道呢

我做错了什么

doskey dirsize=du -P -c -a -b $1 $b grep -E "total$" $b awk "{i=1;print \"Has \" $i \" bytes\"}"
在doskey别名中

  • 管道字符是
    $b

  • 调用别名时,
    $1
    的所有实例都将替换为第一个参数,因此,
    awk
    命令中的
    $1
    将在别名解析期间被替换,并且在执行时它将不会成为对参数的引用

doskey
别名中解决此问题的通常方法是将
$1
转换为不会干扰命令执行但避免doskey解析器处理它的内容。为此,通常的解决方案是使用
$^1
,但在这种情况下,此序列不由
cmd
处理,而是由
awk
处理,
^
不被视为转义字符


我们需要在
awk
内部解决它,使用变量(
i
)替换直接
$1
,以存储索引来检索
$1
,并用
$i
替换
$i
别名中没有特殊含义的
doskey
别名。

您需要引用您的别名:
alias dirsize=“quoted content”