如何从shell脚本创建批处理文件

时间:2015-08-22 07:27:31

标签: windows unix batch-file server

我有一个脚本可以在unix框上运行,该框查找目录中最近添加的文件,并将该文件的名称写入新文件。它看起来像

ls -t|head -n 1 >> ../latestfile.txt

但是我现在需要让它在Windows机器上运行并且被告知它需要是.bat。任何人都可以帮助解决这个问题吗?

3 个答案:

答案 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 -tcmd的等效内容可能是:

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

资源(必读):