原文:https://www.cnblogs.com/caiguodong/p/10308255.html

shell(Linux、Solaris) bat(windows) 含义
# rem 注释行
/【directory】/【directory】/.../【directory】/ 【disk】:\【directory】\【directory】\...\【directory】\ path
【变量】=【文件名】,LBSAM set 【变量】=【文件名】,BSAM 把文件名赋值给变量

【变量】=【设定值】

【变量】="【设定值】"

【变量】='【设定值】'

【变量】=【设定值】; export 【变量】

export 【变量】=【设定值】

set 【变量】=【设定值】 变量的赋值
unset 【变量】 set 【变量】= 变量的初始化

${【变量】}

$【变量】

%【变量】%

变量的引用

※如果变量在if语句和for循环中被赋值了的话,

在引用的时候需要用!【变量】!。

※如果使用!【变量】!,要添加(延迟环境变量)

setlocal enabledelayedexpansion

$【数字】

${【数字】}

%【数字】 shell/bat启动的时候,传入的第【数字】个参数

$1/%1 →启动时传入的第一个参数

【变量】=`basename $0 .sh` set 【变量】=%~n0

本shell/bat的文件名字赋值给变量

test1.sh/test.bat → 变量=test

【变量】=`dirname 【文件】` for %%i in ("【文件】") do (set 【变量】=%%~dpi)

取得所在文件路径赋值给变量

例 :

shell:

path1=`dirname /home/dir1/dir2/test.txt`

path1=/home/dir1/dir2

bat  :

for %%i in ("D:\dir1\dir2\test.txt") do (

set path2=%%~dpi

)

path2=D:\dir1\dir2

【变量】=`basename 【文件】` for %%i in ("【文件】") do (set 【变量】=%%~nxi) 取得所在文件路径赋值给变量

例 :

shell:

filename1=`dirname /home/dir1/dir2/test.txt`

filename1=test.txt

bat  :

for %%i in ("D:\dir1\dir2\test.txt") do (

set filename2=%%~dpi

)

filename2=test.txt

【变量】=$?  set 【变量】=%errorlevel% 上一个命令执行的结果赋值给变量
if [ 【条件】 ]; then
    【处理1】
else
    【处理2】
fi
if 【条件】 (
    【处理1】
) else (
    【处理2】
)

※shell里面的if语句(if test 【条件】)和

(if [ 【条件】 ])意思一样

 if [ $【变量】 -eq 【数值】 ]; then  if %【变量】% equ 【数值】 (  等于
 if [ $【变量】 -ne 【数值】 ]; then  if %【变量】% neq 【数值】 (  不等于
 if [ $【变量】 -lt 【数值】 ]; then  if %【变量】% lss 【数值】 (  小于
 if [ $【变量】 -le 【数值】 ]; then  if %【变量】% leq 【数值】 (  小于等于
 if [ $【变量】 -gt 【数值】 ]; then  if %【变量】% gtr 【数值】 (  大于
 if [ $【变量】 -ge 【数值】 ]; then  if %【变量】% geq 【数值】 (  大于等于
 if [ $【变量】 = "【字符串】" ]; then  if %【变量】%==【文字列】 (  等于
 if [ $【变量】 != "【字符串】" ]; then  if not %【变量】%==【文字列】 (  不等于
 if [ -e 【文件 or 文件夹】 ]; then  if exist 【文件 or 文件夹】 (  文件或文件夹存在
 if [ ! -e 【文件or 文件夹】 ]; then  if not exist 【文件 or 文件夹】 (  文件或文件夹不存在
 if [ -f 【对象】 ]; then  for %%A in ("【对象】") do (set 【变量】=%%~aA)
 if  "%【变量】:~0,1%"=="-" (

对象是文件

※shell里面如果是if [ ! -f 【对象】 ]; then的时候,对应的bat是

if  not "%【变量】:~0,1%"=="-" (

意思是判断对象是否是文件以外

 if [ -d 【对象】 ]; then  for %%A in ("【对象】") do (set 【变量】=%%~aA)
 if  "%【变量】:~0,1%"=="d" (
 对象是文件夹
 if [ -s 【文件】 ]; then  for %%A in ("【文件】") do (set 【变量】=%%~zA)
 if  %【变量】% gtr 0 (
 文件的size大于0
 `date '+%Y%m%d'`  %date:~0,4%%date:~5,2%%date:~8,2%  2018/9/30 → 20180930
 find 【路径】 -mtime +【数字】 -name "*" -type f -exec rm -f {} \;

PowerShell -Command "Get-ChildItem '【路径】'

-force | Where-Object {($_.Mode.Substring(0,1)

-ne 'd') -and ($_.LastWriteTime -lt (Get-Date).

AddDays(-【数字+1】))} | Remove-Item  -force"

将指定路径下更新日期在【数字+1】天以前的文件删除

例如:把路径下更新日期在7天之前的文件删除

shell: find 【路径】 -mtime +6 -name "*" -type f -exec rm -f {} \;

bat:PowerShell -Command "Get-ChildItem '【路径】' -force |

Where-Object {($_.Mode.Substring(0,1) -ne 'd') -and (

$_.LastWriteTime -lt (Get-Date).AddDays(-7))} | Remove-Item  -force"

source 【****.sh】

【****.sh】

 call 【****.bat】  调用其它文件
 `date '+%Y/%m/%d %H:%M:%S'`  %date% %time:~0,8%  2018/8/24 8:45:30 → 2018/08/24 08:45:30
 rm 【文件】  del /f /q 【文件】  删除
 rm -f 【文件】  del /f /q 【文件】  删除

rm -r 【文件名 or 文件夹】

rm -rf 【文件名 or 文件夹】

 ※文件的时候
del /f /q 【文件】
※文件夹的时候
rmdir /s /q 【文件夹】
 删除
 【命令】 | tee -a 【log文件】  DEL 【临时文件】
命令> 【临时文件】 2>&1
TYPE 【临时文件】
TYPE 【临时文件】 >>【log文件】
 
     

windows下的批处理bat文件和Linux下的shell文件的含义的更多相关文章

  1. windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号

    一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...

  2. 怎么查这个文件在linux下的哪个目录

    因为要装pl/sql所以要查找tnsnames.ora文件..看看怎么查这个文件在linux下的哪个目录 find / -name tnsnames.ora 查到: /opt/app/oracle/p ...

  3. windows下的批处理bat文件和Linux下的shell文件的互相转换

    shell(Linux.Solaris) bat(windows) 含义 # rem 注释行 /[directory]/[directory]/.../[directory]/ [disk]:\[di ...

  4. 解决Windows下文件在Linux下打开出现乱码的问题

    目录 问题 原理 解决 总结 参考资料 问题 前几天生病了,Java一直在看代码但是没跟着打,于是决定偷一波小小的懒,直接把教材的代码从Windows通过共享文件夹放到了Linux里面.但是编译的时候 ...

  5. windows cmd命令 批处理bat 导增量jar包【原】

    下载地址 https://pan.baidu.com/s/1cIyCbG 导jar包 @echo off setlocal enabledelayedexpansion echo ---------- ...

  6. 批处理bat实现创建、复制、删除文件及文件夹

    转自:http://blog.csdn.net/linda1000/article/details/10221285 1 建bat文件自动执行复制,删除命令. 例1:以下是复制cd.dll文件至win ...

  7. windows下写的脚本,在linux下执行失败

    Windows中的换行符为CRLF, 即正则表达式的rn(ASCII码为13和10), 而Unix(或Linux)换行符为LF, 即正则表达式的n. 在Windows和Linux下协同工作的时候, 往 ...

  8. [moka同学笔记]window下.htacess文件 与linux下.htacess文件

    windows下 # Turn on URL rewritingRewriteEngine On# Installation directoryRewriteBase /# Protect hidde ...

  9. Java执行cmd命令、bat脚本、linux命令,shell脚本等

    1.Windows下执行cmd命令 如复制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt 现文件如图示: 执行代码: private static void run ...

  10. Python下的OpenCV学习 01 —— 在Linux下安装OpenCV

    一.OpenCV简要介绍 OpenCV是一个跨平台的计算机视觉库,可以运行在Windows.Linux.MacOS等操作系统上.OpenCV提供了众多语言的接口,其中就包含了Python,Python ...

随机推荐

  1. [转帖]jumpserver (Linux资产管理快速入门)

    准备工作 准备三台虚拟机,一台作为jumpserver的服务端,两台作为测试端. 一.安装好jump server后,输入IP地址登录 [192.168.2.111为本机测试地址] 二.创建用户组 这 ...

  2. Oracle数据库权限学习--表或者是视图不存在

    Oracle数据库权限学习--表或者是视图不存在 摘要 本文写于: 12.10 01:00 巴西踢的太烂了 帮同事看一下补丁执行报错的问题. 问题原因很简单. user_all_table能够后去本用 ...

  3. 工单 工序外协 更改PR/PO

    工序外协详解介绍'https://blog.csdn.net/weixin_43814706/article/details/113586961' 需求:创建工序委外的工单时更改对应PR/PO 行文本 ...

  4. 手写promise实现自定义封装多个回调函数的执行

    自定义封装多个回调函数的执行 <script src="./Promise.js"></script> let p = new Promise((resol ...

  5. 替换 &开头。;结尾之间的内容。用空格代替他们

    替换 &开头.;结尾之间的内容.用空格代替他们 var regExp = /\&.*?\;/g; var str = '123&asdsa;dqwe'; str = str.r ...

  6. 果然,基于 VictoriaMetrics 修改而来的 VictoriaLogs 来了!!!

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 2022 年 6 月的时候,正在痛苦的研究 grafana ...

  7. docker 镜像导出和导入(适用于内网无法拉镜像的问题)

    1.在外网将镜像从指定的仓库拉下来 docker pull consul 现在已将consul镜像拉到了可连外网的服务器  2.将镜像把包到指定的tar文件中 docker save consul:l ...

  8. Python自动化办公--Pandas玩转Excel数据分析【三】

    相关文章: Python自动化办公--Pandas玩转Excel[一] Python自动化办公--Pandas玩转Excel数据分析[二] python处理Excel实现自动化办公教学(含实战)[一] ...

  9. 9.4 Windows驱动开发:内核PE结构VA与FOA转换

    本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还 ...

  10. 3.3 Windows驱动开发:内核MDL读写进程内存

    MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式.在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的.因此,要在一个进程中读取或写入另一个 ...