当前位置: 移动技术网 > IT编程>脚本编程>Python > 在 Windows 命令行中实现 ls 命令

在 Windows 命令行中实现 ls 命令

2020年07月27日  | 移动技术网IT编程  | 我要评论

第一步,新建一个名为 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 %*

最后我们来看看效果:

 

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 %*

执行以下看看效果:

 

可以看到,跟 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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网