我有一个脚本可以在unix框上运行,该框查找目录中最近添加的文件,并将该文件的名称写入新文件。它看起来像
ls -t|head -n 1 >> ../latestfile.txt
但是我现在需要让它在Windows机器上运行并且被告知它需要是.bat。任何人都可以帮助解决这个问题吗?
答案 0 :(得分:1)
您最好的选择是安装Cygwin并将其称为一天。
Cygwin是GNU和开源工具的大集合,提供类似于Windows上Linux发行版的功能。
之后,您应该能够从常规Windows命令行,批处理文件或计划任务中运行该命令。
答案 1 :(得分:1)
这有效地给出了相同的结果。
@echo off
:latest file
for /f "delims=" %%a in ('dir /b /od /a-d') do >"latestfile.txt" echo %%a
答案 2 :(得分:0)
Windows ls -t
中cmd
的等效内容可能是:
dir /B /TC /OD /A-D
- 按创建日期排序(参见/OD
)&时间(见/TC
); dir /B /TW /OD /A-D
- 按上次写入日期排序(参见/OD
)&时间(见/TW
):如果省略/T
开关则相同。 head -n 1
等效:获取最新的文件名(如果需要,添加/TC
开关),即dir /b
输出中的最后一项变量:
for /F "delims=" %G in ('dir /B /OD /A-D') do set "_lastfile=%~G"
下一个.bat
应该有效(注意在循环变量名称%
中加倍%%G
)并添加一行包含 filename(包括扩展名,如果存在,没有路径)最近更改的文件从当前目录到..\latestfile.txt
。这里..\
表示当前目录的父文件夹。
@echo OFF
setlocal EnableExtensions
set "_lastfile=" empty the `_lastfile` variable
for /F "delims=" %%G in ('dir /B /OD /A-D') do set "_lastfile=%%~G"
>> ..\latestfile.txt echo(%_lastfile%
要添加完全限定的文件名,请按如下所示更改最后一行:
>> ..\latestfile.txt echo(%CD%\%_lastfile%
资源(必读):
%~G
等特殊页面)Command Line arguments (Parameters) >>
,>
等特殊页面)Redirection