欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在 Windows 命令行中实现 ls 命令

程序员文章站 2022-06-24 18:46:01
第一步,新建一个名为 ls.py 的 Python 文件,输入如下内容,并保存到 C:\Windows 目录中:import sysimport osdef ls(*args): # 如果有传路径参数,则取路径参数,没传则取当前目录("." 表示当前目录) path = args[1] if args.__len__() > 1 else "." # 文件不存在,直接退出 if not os.path.exists(path): retu...

第一步,新建一个名为 ls.py 的 Python 文件,输入如下内容,并保存到 C:\Windows 目录中:

import sys

import os


def ls(*args):
    # 如果有传路径参数,则取路径参数,没传则取当前目录("." 表示当前目录)
    path = args[1] if args.__len__() > 1 else "."
    # 文件不存在,直接退出
    if not os.path.exists(path):
        return
    # 文件不是一个目录,直接退出
    if not os.path.isdir(path):
        return

    files = os.listdir(path)
    # 对文件名进行排序,方便阅读一些
    files.sort()
    print("  ".join(files))


if __name__ == "__main__":
    ls(*sys.argv)

第二步,新建一个名为 ls.bat 的批处理文件,输入如下内容,也保存到 C:\Windows 目录中:

@echo off 
rem %* 表示把批处理收到的所有参数都传递给 ls.py
python C:\Windows\ls.py %*

最后我们来看看效果:

在 Windows 命令行中实现 ls 命令

 

java版:

---------------------------------------------------------------------------------------------------------------------------

我们也可以用其它语言来实现这个类似的脚本,比如 java,操作步骤如下:

第一步,新建一个名为 ListFiles.java 的 java 源文件,键入如下内容:

import java.io.File;
import java.util.Arrays;
import java.util.Comparator;

public class ListFiles {

    public static void main(String[] args) {
	    String path = args.length != 0? args[0] : ".";

        File file = new File(path);
	    if (!file.exists() || !file.isDirectory()) {
	        return;
        }

        File[] files = file.listFiles();
        if (null == files || files.length == 0) {
            return;
        }

        Arrays.sort(files, new Comparator<File>() {
            @Override
            public int compare(File o1, File o2) {
                return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
            }
        });

        String gap = "  ";
        String names = "";
        for (File f : files) {
            names += f.getName() + gap;
        }
        System.out.println(names);
    }
}

第二步,将它丢到 C:\Windows 目录下,然后在命令行把它编译成 .class 文件:

C:\Windows>javac ListFiles.java

编译成功后,在 C:\Windows 目录下将看到一个名为 ListFiles.class 的文件

第三步,编写 ls.bat,并把它也移动到 C:\Windows 目录:

@echo off 
java -cp C:\Windows ListFiles %*

执行以下看看效果:

 

在 Windows 命令行中实现 ls 命令

可以看到,跟 python 版一样的。一般情况我们推荐用 python,不用编译,修改更便捷。

一个小窍门:java 其实也是可以不编译直接运行的,我们只要在启动 java 时使用 --source <N> 参数就可以了。例如,本例中我们可以把它修改为:

java --source 14 C:\Windows\ListFiles.java

--source 后面的 14 表示用 jdk 14去编译和执行源文件。其它可用值有:7、8、9、10、11、12、13、14。

需要注意的是, --source 命令虽然可以不用编译就直接执行 .java 文件,但它并不是像其它解释型语言那样直接解释执行,其实它是把 .java 加载到内存中后在内存里先执行了编译,然后再交给虚拟机的解释器去运行的。正是因此,所以我们在 --source 参数去直接执行 .java 文件时会明显的感觉比编译后去执行 .class 文件要慢

注意:以上示例需要先安装 Python 或 JDK 哈

 

本文地址:https://blog.csdn.net/hulin0229/article/details/107577761

相关标签: WinShell windows