关于脚本:您为日常生活编写的最有用的脚本是什么?

What is the most useful script you've written for everyday life?

只是想知道这里的人写了哪些小脚本/程序,可以帮助他或她的日常生活(又称与工作无关)。

任何事情,无论是否具有开创性。 现在对我来说,这是一个小小的python脚本,可以根据给定的距离和时间来计算跑步速度。


我不再有代码了,但是我写的最有用的脚本可能是,不管您相信与否,都在VBA中。我有一个令人讨厌的同事,他的导火线如此短,以至于我称他为樱桃炸弹。当客户打来电话,然后站起来,开始在隔间墙上怒吼我时,他常常会生气,这使我的生产力和士气丧命。

我总是打开Microsoft Excel。当他执行此操作时,我将Alt键切换到Excel,然后在工具栏上出现一个带有樱桃炸弹图像的新图标。我会谨慎地单击该按钮,而不会发生任何事情。

但是,此后不久我会打个电话,说"是的,听起来不错。我最好看看。"然后我起床,向樱桃炸弹道歉并走开。

发生的是,我们使用了NetWare,并且内置了原始消息传递系统。当我单击按钮时,一个小的VBA脚本会向我的朋友发送NetWare消息,告诉他们樱桃炸弹又来了,他们会请给我打电话。他从来没有想过:)


我的钥匙掉在笔记本电脑上了;因此,我编写了一个程序,将彼此之间200 MS内的两次" 0"击键替换为o,将彼此之间700 MS内的两次" 0"击键替换为0,而忽略了其余部分。因此我可以在更换键盘之前使用笔记本电脑。

哇;我不知道这会这么受欢迎:p

至于如何-微软公开了一个很好的小API功能,称为"挂钩"。

http://msdn.microsoft.com/zh-cn/library/ms644959(VS.85).aspx#wh_keyboard_llhook

使用那个钩子;我能够编写一个执行所需操作的"过滤器"(提示:如果您在回调窗口中返回1,则不会处理按键)。

我之所以知道这一点,实际上不是因为我正在编写键盘记录程序,而是因为我前一段时间为Synergy编写了程序微笑程序。

是的。我确实编写了另一个程序,该程序将字母数字键与随机字母数字键互换,是的。这真的很有趣:D


一个bash脚本被调出,这样,如果我在/a/very/deeply/nested/path/somewhere中,并且想向上移N个目录,则可以键入up N

1
2
3
4
5
6
7
8
#!/bin/bash
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
    P=$P/..
done
cd $P

例如:

1
2
/a/very/deeply/nested/path/somewhere> up 4
/a/very>

NB by gmatt:

通过完成上面的出色工作,可以通过将以下内容放入您的bashrc中将其扩展为back函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function up( )
{
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
    P=$P/..
done
cd $P
export MPWD=$P
}

function back( )
{
LIMIT=$1
P=$MPWD
for ((i=1; i <= LIMIT; i++))
do
    P=${P%/..}
done
cd $P
export MPWD=$P
}


超级远程重置按钮。
一群超级特殊的模拟硬件(在一个充满VME板条箱的房间里,其性能要比您的GPU差),世界另一端的用户会在清晨崩溃。进入实验室并通过安全性花了一个小时。

但是我们不允许连接到超级特殊控制器或修改硬件。解决方案是使用epson点阵打印机的老式DEC工作站,将塑料尺子粘在进纸旋钮上,将打印机放在复位按钮附近。
以常规用户身份登录WS(不允许root用户,所有外部端口均已锁定),并用24条空白行打印文档-旋转进纸旋钮,然后用尺子按超级特殊硬件上的复位键。


在Windows XP上,我设置了一个AT作业,每天在C:下运行此命令。

1
dir /s /b * > dirlist.txt

这列出了C驱动器上所有文件的完整路径。然后,每当需要查找文件时,都可以使用findstr。使用Windows资源管理器搜索比这更好,因为它允许在整个路径上进行正则表达式匹配。例如:

1
2
findstr".jpg" dirlist.txt
findstr /i /r"windows.*system32.*png$" dirlist.txt

这是设置非常快速的解决方案,如果您发现自己安装了全新的Windows并且没有Internet连接,则非常有用。

如果您需要在某些文件类型中搜索某种模式,请首先列出所有需要检查的文件,然后在其中搜索。例如,要查找翻转图像的Java或Python程序,可以执行以下操作:

1
2
findstr"\.java \.py" dirlist.txt > narrowlist.txt
findstr /i /r /f:narrowlist.txt"flip.*image"


我有一个Python脚本,在插入数码相机后会自动运行。

它将所有图片从相机的存储卡上复制下来,进行备份,然后将其上传到Flickr。

从Flickr上传的片段来自uploadr.py(我对此不以为然)。

这是用于卸载相机的Python代码。它通过SRCDIR递归,并在将图像复制到DESTDIR之前用日期和时间命名每个图像。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/python

import os
import string
import time
import shutil

###################################################
__SRCDIR__ ="/mnt/camera"
__DESTDIR__ ="/home/pictures/recent"
###################################################
def cbwalk(arg, dirname, names):
    sdatetime = time.strftime("%y%m%d%H%M")
    for name in names:
        if string.lower(name[-3:]) in ("jpg","mov"):
            srcfile ="%s/%s" % (dirname, name)
            destfile ="%s/%s_%s" % (__DESTDIR__, sdatetime, name)
                    print destfile
            shutil.copyfile( srcfile, destfile)
###################################################
if __name__ =="__main__":
    os.path.walk(__SRCDIR__, cbwalk, None)


几年前,我在几个win32 api的帮助下编写了一个winforms应用程序,将自己完全锁定了计算机一小时,从而迫使我继续锻炼。因为我很懒?不...因为我有个人健身目标。有时,您只需要一点踢即可开始:)


我编写了一个Python脚本,该脚本可以转到我阅读的所有网络漫画,然后下载任何新漫画。我每天只运行一次,不需要单独访问每个站点,只需访问/ Comics /文件夹。 ;)


" backup.sh"可压缩目录的内容并将其发送到我的gmail帐户。


我写了一个脚本,最终在团队中每天都使用。当我以前在英特尔工作时,我们有一个与访问数据库对话以获取转储寄存器信息的应用程序(我致力于验证芯片组)。它将(从SQL查询中)获取此信息并将其转储到CSV文件,HTML文件和Excel文件中。整个过程耗时近2个小时。不是开玩笑。不知道为什么花了这么长时间。我们会在午餐前一个小时开始,先去吃午餐,然后再回来。

我认为必须有更好的方法来做到这一点。我与维护注册表数据库的团队进行了交谈,并从中获取了SQL代码。然后,我编写了一个perl脚本,该脚本捕获数据并将其输出为CSV,HTML和Excel格式。运行?大约1-2秒。速度有了很大的提高。

2006年在伊拉克部署时,我还写了一些剧本(我在国民警卫队服役9年-12月退役)。我们使用了这个名为ULLS-G(单位级物流系统-地面)的旧应用程序,该应用程序是用ADA编写的,最初是在DOS上运行的。他们在命令外壳中对其进行了充分的破解,使其可以在Windows XP上运行。该系统没有鼠标界面。一切都通过键盘完成,没有批处理功能。假设您要为所有车辆操作员打印许可证?好吧...我们部队有150名士兵,所以花了很长时间。假设每个人都拥有使用新车的资格,而您想将其添加到每个人的操作员资格中?您必须一一完成。

我能够找到SAGE数据库的ODBC驱动程序(使用了ULLS-G),因此我编写了能够与SAGE数据库对话的perl脚本。事情花了一个多小时,现在只花了几秒钟。我还使用脚本和驱动程序进行报告。我们每天早晨必须报告所有信息直到营。其他单位每天早晨会用手写方式将信息写入。我整理了一个Excel宏,该宏使用相同的驱动程序进行通信,并与SAGE数据库通信,并以这种方式更新了Excel电子表格。这是我编写过的最复杂,也是唯一的Excel宏。它获得了回报,因为他们授予了我"陆军表彰奖章"。是的,我因撰写Perl脚本而在军中获得了奖章:)有多少人可以这么说? ;)


我的.cmd备份脚本。它每晚在我的服务器上运行,并根据工作日命名备份文件。整整一周的备份为我(和我的家人)节省了很多时间:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
:: Backup args:
::   /V Verify? (yes/no)
::   /R Restrict access to owner? (yes/no)
::   /RS Removable storage? (yes/no)
::   /HC Hardware compression (on/off)
::   /M Backup type (normal/copy/differential/incremental/daily)
::   /L Log file type (f/s/n)
::   /D"Description"
::   /J"Job-name"
::   /F"File-name"

SETLOCAL

:: ensure that network drives are mounted
CALL C:\bat\configs\MapShares-home.cmd
echo on

set today=%DATE:~0,3%
if %today%==Mon set yesterday=0Sunday
if %today%==Tue set yesterday=1Monday
if %today%==Wed set yesterday=2Tuesday
if %today%==Thu set yesterday=3Wednesday
if %today%==Fri set yesterday=4Thursday
if %today%==Sat set yesterday=5Friday
if %today%==Sun set yesterday=6Saturday

set configsDir=%~dp0
set storePath=C:\mybackups

:: (eg: Monday C files)
set title=%yesterday% backup set


echo %DATE% %TIME% %title% >"%storePath%\%yesterday%_backup.log"

CALL BackupConfigs.bat

:: Create new BKF file
call C:\WINDOWS\system32
tbackup.exe backup ^
   "@%configsDir%\daily.bks" ^
    /V:yes /R:no /RS:no /HC:off /M normal /L:s ^
    /D"%title%" ^
    /J"%title%.job" ^
    /F"%storePath%\%yesterday%.bkf" ^
    >>"%storePath%\%yesterday%_backup.log"

echo %DATE% %TIME% Completed >>"%storePath%\%yesterday%_backup.log"

copy"%storePath%\%yesterday%.bkf""V:\Backups
EPTUNE"

CALL C:\bat\clean-temps.bat

defrag -v C: >"%storePath%\%yesterday%_defrag.log"

:: display backup directories
start /D"C:\bat\Backups" checkbkf.bat

ENDLOCAL

::pause


我是私人飞行员。我编写了一些脚本,这些脚本可从Aviationweather.gov获取当地机场的天气信息。它们对于快速回答"今天是美好的一天吗?"这个问题很有用。


一个Greasemonkey脚本,从游戏网站Kotaku.com上删除了明显的愚蠢[*]评论。

[*]如常见的拼写错误,全大写,过度使用" LOL"和类似的启发式方法所标识。


线程化的HTML抓取工具,可从网站上下载所有适用于系列/电影的字幕,这很难使用(您必须在搜索后点击4次才能进入下载页面,才能显示更多广告)。现在,我只输入搜索条件,然后按下载。


alias dir ='ls -al'是我最喜欢的脚本。


一个perl脚本,按选定的类别将本地Craigslist刮入SQL DB,然后可以对其进行查询。

此版本的V2使用计时器更新数据库,并在我对任何查询进行匹配时提醒我,基本上为我提供了CL的后台代理。


通过拖放操作重命名海量文件。

多年以前,我已经制作了一个小的VBScript,它可以接受RegEx并相应地替换文件名。您只需将一堆文件或文件夹放到上面。我发现这些年来非常有用。

gist.github.com/15824(请注意,注释是德语的)


在我以前的工作地点,上班时间很荒谬。那是一家软件公司,我的老板很烂。他会在下午5:30左右给我们工作(正好是该回家的时间),并让我们完成工作,直到11:00 PM(超过我们理想的生产时间)。否则,他会在仍在进行的代码中发现烦人的问题。

因此,我制作了一个批处理文件和一个脚本,该脚本会在7:00 PM至8:00 PM之间的任意时间关闭计算机。它有一个1分钟的计时器,以防万一我下班后呆在那儿并且需要中止关机过程。

但是我会在下午5:00之前离开我的办公桌,因此,如果他想在结帐时间附近丢下垃圾,他找不到我来留我。如果他来到我的办公桌上并看到我的电脑,他会认为我仍在厨房区域或附近的小型超市里,要拿些薯条或其他东西。但是,如果那段时间不在家,他会打给我手机,告诉我回到办公室。

我还计划将计算机上的BIOS设置为在8:00 AM或9:00 AM左右打开计算机,以防我感到懒惰并想在10:00 AM或11:00 AM左右漫步。如果我被发现走到办公桌前,他会问:"你整个早上都在哪里?"我会说:"我正在与营销团队开会。"或"我出去吃早餐。"

笨狗


从几个月前我在博客中发布的内容,到现在,我已经从一个我认为很酷的想法变成了我最近记忆中最好的小技巧之一。我在这里完整引用:

好。

==================

好。

我花了很多时间在bash上。对于初学者来说,bash是一个
您会在大多数Unix机器上找到它们,幸运的是,在某些窗口中
Mac在那里。乍一看,它不过是命令行界面,
因此,大多数将此类事物视为过时的用户都无法理解
他们宁愿忘记。

好。

我几乎全力以赴。我从命令行阅读了我的电子邮件,
为什么我避开标记电子邮件。我浏览目录,编辑文件,参与
每天检查和交付源代码,搜索文件,搜索内部文件,
重启我的机器,甚至偶尔从命令行浏览网页。
bash是我数字生活的灵魂。

好。

麻烦的是,我倾向于一次打开大约6个bash窗口。在
今天工作,我有一台正在运行网络服务器,另一台正在摆弄我的数据库,
第三,第四和第五个编辑不同的文件,而第六个正在磨
通过我的机器尝试记录系统上每个文件的名称。
为什么?因为如果您能够通过这样的档案进行搜索很方便
想知道通过文件名在哪里找到对象。

好。

当您这样做时,您最终会在控制栏中找到名为
简单地说,"重击"。如果您只有其中一个,这很好,但当您感到痛苦时
您有6个或更多。...以及其他20件事。我有三个
在一个键盘/鼠标对的同时命令下监视
感到需要更多。这些窗口中的每一个都有几个bash终端打开。

好。

因此,我将其混合在一起。首先,将这些行放在
.bash_profile:

好。

1
2
3
  export PROMPT_COMMAND='export TRIM=`~/bin/trim.pl`'
  export PS1="\[\e]0;\$TRIM\a\]\$TRIM>"
  trap 'CMD=`history|~/bin/hist.pl`;echo -en"\e]0;$TRIM> $CMD\007"' DEBUG

我仔细阅读并撰写了数十段有关这一切的工作原理
为什么按原样设置,但您并不是很感兴趣。相信我。
关于为什么我在该书上执行了" CMD = ...; echo ..."一书,有一整章的内容
第三行。许多人(包括托管我的其他域的bluehost)
仍在使用旧版本的bash,但在处理陷阱方面存在重大错误,
所以我们被困住了。您可以卸下CMD并替换为
$ BASH_COMMAND,如果您是最新的bash版本,并且想要
研究。

好。

无论如何,我使用的第一个脚本在这里。它会创建一个不错的提示,其中包含
您的计算机名称和目录,并切成合理的长度:

好。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                       ============trim.pl===========
  #!/usr/bin/perl

  #It seems that my cygwin box doesn't have HOSTNAME available in the
  #environment - at least not to scripts - so I'm getting it elsewhere.
  open (IN,"/usr/bin/hostname|");
  $hostname = <IN>;
  close (IN);
  $hostname =~ /^([A-Za-z0-9-]*)/;
  $host_short = $1;

  $preamble ="..." if (length($ENV{"PWD"})>37);

  $ENV{"PWD"} =~ /(.{1,37}$)/;
  $path_short = $1;

  print"$host_short: $preamble$path_short";

                        ==============================

此博客文章顶部有一个警告,您现在应该先阅读
您开始问一些愚蠢的问题,例如:"为什么不使用HOSTNAME
环境变量通过@ENV吗?"简单:因为这不适用于所有
我试过的系统。

好。

现在换个真正酷的东西。还记得.bash_profile添加的第3行吗?

好。

1
  trap 'CMD=`history|~/bin/hist.pl`;echo -en"\e]0;$TRIM> $CMD\007"' DEBUG

它会将trim.pl脚本输出转储到与以前相同的容器中,进行打印
到命令提示符和窗口标题,但这一次它添加了
您刚刚键入的命令!这就是为什么你不想做所有的事情
.bashrc中的代码:您运行的任何脚本(在我的机器上,男人就是其中之一)
将在每一行触发此事件。男人的输出被严重乱码
我们在这里做什么。我们在终端上玩得并不好。

好。

要获取您刚刚键入的命令,我们将bash的历史记录切成小块
位:

好。

1
2
3
4
5
6
7
8
9
10
11
12
                        ===========hist.pl============
#!/usr/bin/perl

while (<STDIN>)
{
        $line = $_
}

chomp $line;
$line =~ /^.{27}(.*)/;
print $1;
                        ==============================

所以现在,我有一个数不胜数的窗户,他们说:

好。

1
2
3
4
5
6
7
8
  castro: /home/ronb blog
  Ron-D630: /C/ronb/rails/depot script/server
  Ron-D630: /C/ronb/rails/depot mysql -u ron -p
  Ron-D630: /C/ronb/rails/depot find . > /C/ronb/system.map
  Ron-D630: /C/ronb/rails/depot vi app/views/cart.html.erb
  Ron-D630: /C/perforce/depot/ p4 protect
  Ron-D630: /C/perforce/depot/ p4 sync -f
  Ron-D630: /C/perforce/depot/

从屏幕底部的快乐小条,我现在可以看出哪个是
此刻一目了然。而且因为我们已经设置了PS1,所以只要执行命令
完成执行后,命令名称仅由trim.pl的输出替换
再次。

好。

更新(同一天):
这些东西(.bash_profile条目)在我遭受各种打击时
在我的.bashrc中尝试过。您的.bashrc由非交互式脚本执行
每当您调用bash作为一种语言时。我在尝试使用时碰到了这个
男人。各种垃圾(.bashrc的全文,外加转义
字符)显示在手册页的顶部。我建议测试
一旦您获得此宝石,即可在命令行中通过" man man"快速调用
全部在一起。

好。

我想是时候该将自定义垃圾从.bashrc中拉出并放入
它所属的地方...

好。

偶然地,我发现自己在此过程中的某一时刻键入了" man trap"。

好。

好。


我过去曾在技术夏令营工作,我们不得不在一周结束时为小组中的每个孩子编写这些作业,然后他们会收到这些作业并将其带回家作为纪念品。通常,它们由一堆通用句子和一到两个个性化句子组成。我写了一个python脚本,用一堆罐装句子构造了其中的一些文字,并允许用户在中间添加几个个性化的句子。这为我和我秘密透露的其他顾问节省了大量时间。即使其中很多都是自动化的,我们的文章仍然看起来比许多"诚实"的文章更好,因为我们可以花更多的时间在个性化部分上。


快速且肮脏的Python脚本,每5秒钟对google.com的DNS进行一次查询,如果成功,则会发出一声哔声,如果失败,则会发出两次哔声。

我写这篇文章的时候,我不得不住在一个高度脆弱的家庭网络中。即使当我第一次头顶穿过房间的桌子下面时,我的双手也充满了网络电缆和手电筒,它使我可以立即了解网络的状态。


Greasemonkey脚本,用于向在线游戏添加"大量按下该按钮"控制框。


一个小脚本,监视一些受欢迎的网站,查找与我的技能匹配的广告,并通过电子邮件向我发送电子邮件。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#! /bin/bash
# check to see if site is up
#   if it is, don't worry
#   if it's down, restart apache after get a process listing
#
# v.1 Warren M Myers - initial stab
#     31 Aug 06
#

ERRCOD='7'
WHEN=`date +%d%b%y`
REPT="~/psaux.$WHEN.txt"
STARS='********************'

curl -I http://www.shodor.org > /var/tmp/curlret.txt

if ["$?" ="$ERRCOD" ]; then
    # return was unable to connect to host: save ps -aux; mail report
    ps -aux > $REPT
    echo $STARS
    echo 'curl return results'
    echo
    cat curlret.txt
    echo
    echo $STARS
    echo 'ps -aux results'
    cat $REPT
    echo
    echo $STARS
    echo 'restarting apache'
    /etc/init.d/apache2 restart
    echo 'apache restarted'
    echo
    echo"ps -aux results saved in $REPT"
fi

rm -f /var/tmp/curlret.txt


我将此用作自动加载的功能。我可以只键入" mycd",然后出现我经常使用cd访问的目录列表。如果我碰巧知道数字,那么我只能说" mycd 2"。要将目录添加到列表中,只需键入" mycd / tmp / foo / somedirectory"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function mycd {

MYCD=/tmp/mycd.txt
touch ${MYCD}

typeset -i x
typeset -i ITEM_NO
typeset -i i
x=0

if [[ -n"${1}" ]]; then
   if [[ -d"${1}" ]]; then
      print"${1}">> ${MYCD}
      sort -u ${MYCD} > ${MYCD}.tmp
      mv ${MYCD}.tmp ${MYCD}
      FOLDER=${1}
   else
      i=${1}
      FOLDER=$(sed -n"${i}p" ${MYCD})
   fi
fi

if [[ -z"${1}" ]]; then
   print""
   cat ${MYCD} | while read f; do
      x=$(expr ${x} + 1)
      print"${x}. ${f}"
   done
   print"
Select #"
   read ITEM_NO
   FOLDER=$(sed -n"${ITEM_NO}p" ${MYCD})
fi

if [[ -d"${FOLDER}" ]]; then
   cd ${FOLDER}
fi

}


我喜欢根据拍摄日期将照片存储在目录中。因此,我编写了一个程序,该程序将扫描存储卡中的图片,并根据图片的日期在硬盘上创建所需的任何文件夹,然后将其复制到其中。


编写脚本以单击我的开始按钮,然后在半秒钟内再次单击它,然后每30秒重复一次。

使我在工作时保持在线状态,并且可以在其旁边的个人笔记本电脑上完成真正的工作。不被工作软件所困扰。

不要告诉老板:)


MySQL备份。我制作了一个Windows批处理脚本,该脚本将创建MySQL数据库的增量备份,每天创建一个新的转储,并每隔10分钟在远程服务器上备份一次。它节省了我无数次的时间,尤其是在无数次客户会打电话来的情况下,他们的头大喊着那条记录刚刚从数据库中"消失"了。我之所以说"没问题,让我们看看发生了什么",是因为我还编写了一个二进制搜索脚本,该脚本将查找数据库中存在记录的最后一刻。从那里很容易理解是谁"偷了"它,以及为什么。
您将无法想象这些功能有多有用,而我已经使用它们将近5年了。我不会切换到其他任何东西,仅仅是因为它们已经过粗略的测试并且是定制的,这意味着它们完全可以满足我的需要,仅此而已,但是我已经对其进行了很大的调整,因此添加额外的内容将很快功能。
因此,我的"杰作"是Windows的MySQL增量备份+远程备份+日志搜索系统。我也为Linux写了一个版本,但是我已经在某个地方丢失了它,可能是因为它只有大约15行+一个cron作业,而不是Windows的大约1200行+两个预定任务。


使用rsync执行轮换备份的shell脚本。它还支持执行任意子程序以支持其他预备份活动(例如,下载美味的书签)。

http://gist.github.com/6806


" net start"和" net stop"命令的各种快捷方式,因此我无需进入服务MMC即可启动和停止服务


一个小型应用程序,在" X"毫秒内每" X"毫秒单击(或双击)一段时间。
不再需要那只喝酒的小鸟在核电站工作! ;)


我得到了一个脚本,该脚本提取id3标签以某种格式重新编码歌曲,然后根据标签将它们添加到我的音乐库中。

300行python。主要是因为la脚无法很好地处理标签。


VBS脚本可在我的照片文件夹中创建YYYY / YYYY-MM / YYYY-MM-DD文件结构,并将照片从相机移动到相应的文件夹。


我编写了一个简单的VB应用程序,用于跟踪我玩过并成功完成了Freecell的游戏编号,并且始终以不同的种子启动它。

....从1 ....开始

最大游戏数为65k。不幸的是,超过5年后,我仍然只有数百人。但是至少我知道我从未两次玩过同一个牌!

**后记-这是我写过的唯一VB应用程序。我尖叫回到C ++。


最有用的?但是有很多...

  • d.cmd包含:@dir / ad / on
  • dd.cmd包含:@dir / a-d / on
  • x.cmd包含:@exit
  • s.cmd包含:@start。
  • sx.cmd包含:@start。 & 出口
  • ts.cmd包含以下内容,这使我无论是否使用Vista SP1都可以通过RDP正确连接到另一台计算机的控制台会话。

    @回声关闭

    ver |找到" 6.0.6001"

    如果ERRORLEVEL 0,如果不是,则错误级别1(设置TSCONS = admin),否则,设置TSCONS = console

    echo发出命令:mstsc /%TSCONS%/ v%1

    启动mstsc /%TSCONS%/ v%1

  • (很抱歉,格式奇怪,每个答案最多只能有一个示例代码?)

    在命令提示符下,我将导航至VS解决方案文件所在的位置,然后再将其打开,但是我懒得键入blah.sln并按Enter。所以我写了sln.cmd:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    if not exist *.sln goto csproj
    for %%f in (*.sln) do start /max %%f
    goto end

    :csproj
    for %%f in (*.csproj) do start /max %%f
    goto end

    :end

    因此,我只需键入sln并按Enter,它就会在当前目录中打开解决方案文件(如果有)。我将诸如push和popd之类的东西包装在pd.cmd和pop.cmd中。


    脚本读取当前目录中的配置文件,登录到FTP帐户,并上传自上次运行以来已更改的所有文件。对于使用共享主机的客户端来说非常方便,FTP是我访问文件的唯一选择。

    http://lucasoman.com/code/updater


    一个小的任务栏程序,它从第三方JavaDoc中提取每个错误代码常量,然后让我查找给定错误代码的常量名称。另外,添加从十六进制到十进制等的所有转换。

    在调试器中工作时会遇到很多问题-您可以获取错误代码,但是将代码追溯到文本却是一个巨大的痛苦。使用包装本地方法,OS调用或COM的软件时,这种情况甚至更常见。通常,常量是直接从错误头文件中复制出来的,没有附加上下文,重复值和枚举。


    并非每天都这样,但是我确实使用XSLT脚本来创建我的婚礼邀请(一个用于邀请卡插入的Pages文件,一个用于地址标签的HTML文件)。


    我使用procmail将收到的电子邮件排序到不同的文件夹。因为我难以记住procmailrc语法,所以我将m4用作预处理器。这是我的procmailrc的开始方式(这不是脚本):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    divert(-1)
    changequote(<<, >>)
    define(mailinglistrule,
    <<:0:
    * $2
    Lists/$1
    >>)
    define(listdt, <<mailinglistrule($1,^Delivered-To:.*$2)>>)
    define(listid, <<mailinglistrule($1,^List-Id:.*<$2>)>>)
    divert# Generated from .procmailrc.m4 -- DO NOT EDIT

    这为邮件列表定义了两个宏,例如listdt(foo,[email protected])扩展为

    1
    2
    3
    :0:
    * ^Delivered-To:.*[email protected]
    Lists/foo

    这意味着带有Delivered-To标头的邮件包含[email protected]的电子邮件应放在Lists / foo文件夹中。它还会安排处理后的文件以注释开头,警告我不要直接编辑该文件。

    现在,坦率地说,M4吓到我:如果我不小心重新定义了宏,而procmail开始丢弃我所有的电子邮件,或者类似的东西怎么办?这就是为什么我有一个名为update-procmailrc的脚本的原因,该脚本以diff格式向我显示了procmailrc的变化方式。如果更改仅几行并且看起来大致上与我的预期相符,那么我可以很乐意批准它,但是如果文件有很大的更改,我知道应该更仔细地查看我的编辑。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #! /bin/sh

    PROCMAILRC=.procmailrc
    TMPNAM=.procmailrc.tmp.$$
    cd $HOME
    umask 077
    trap"rm -f $TMPNAM" 0

    m4 < .procmailrc.m4 > $TMPNAM
    diff -u $PROCMAILRC $TMPNAM

    echo -n 'Is this acceptable? (y/N) '
    read accept

    if [ -z"$accept" ]; then
        accept=n
    fi

    if [ $accept = 'y' -o $accept = 'Y' ]; then
        mv -f $TMPNAM $PROCMAILRC && \
        chmod 400 $PROCMAILRC && \
        echo"Created new $PROCMAILRC"
        if ["$?" -ne 0 ]; then
            echo"*** FAILED creating $PROCMAILRC"
        fi
    else
        echo"Didn't update $PROCMAILRC"
    fi

    该脚本尚未阻止任何电子邮件灾难,但是它使我对更改procmailrc的担忧减少了。


    我想这取决于您如何定义有用的方法,但是我最喜欢的小脚本是* nix fortune程序的变体。参见下文,您将了解其功能:

    1
    2
    3
    4
    5
    6
    telemachus ~ $ haiku

       January--
    in other provinces,
       plums blooming.
        Issa

    它实际上并没有完成任何事情,但是一个好的句还有很长的路要走。 (我喜欢着色器决定如何解释这首诗的方法。)(编辑:如果我真的很有用,我想说一个脚本,该脚本允许用户输入美国邮政编码,并获取当前天气和0-3天的天气预报来自Google。)


    我写了几行代码来自动调整powertop在拔出笔记本电脑时提出的所有建议,并撤消将笔记本电脑重新插入时的建议。最大功率,最大效率,最大便利。


    我编写了一个用于格式化C源文件的脚本,该脚本使用制表符和空格字符的适当组合自动缩进代码,从而无论编辑器上的制表符设置如何,文件都将正确显示。

    源代码在这里。


    该脚本每小时运行一次,以重新训练基于两个IMAP文件夹放置垃圾邮件和火腿的垃圾邮件过滤器。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #!/bin/sh
    FNDIR="train-as-spam"
    FPDIR="train-as-ham"

    for dir in /home/*/.maildir
    do
        cd"${dir}"
        USER=`stat -c %U .`

        SRCDIR="${dir}/.${FNDIR}"
        if [ ! -d ${SRCDIR} ]; then
            echo no"${SRCDIR}" directory
        else
            cd"${SRCDIR}/cur"
            ls -tr | while read file
            do
                if grep -q"^X-DSPAM""${file}"; then
                    SOURCE="error"
                else
                    SOURCE="corpus"
                fi

                dspam --user"${USER}" --class=spam --source="${SOURCE}" --deliver=innocent,spam --stdout <"${file}">"../tmp/${file}"
                mv"../tmp/${file}""${dir}/new/${file%%:*}" && rm"${file}"
            done
        fi

        SRCDIR="${dir}/.${FPDIR}"
        if [ ! -d ${SRCDIR} ]; then
            echo no"${SRCDIR}" directory
        else
            cd"${SRCDIR}/cur"
            ls -tr | while read file
            do
                if grep -q"^X-DSPAM""${file}"; then
                    SOURCE="error"
                else
                    SOURCE="corpus"
                fi

                dspam --user"${USER}" --class=innocent --source="${SOURCE}" --deliver=innocent,spam --stdout <"${file}">"../tmp/${file}"
                mv"../tmp/${file}""${dir}/new/${file%%:*}" && rm"${file}"
            done
        fi

    done

    为了完成,我想我应该对此做出自己的回答。

    我编写了一个简单的脚本,其中包含了两个人在一起生活的费用,并计算了月底哪个人欠其他钱,以便每个人平均花费。我打算扩展它以存储每种费用的类别并将其存储在数据库中。当然,我可以只使用现有的软件...但是那有什么乐趣呢?

    当然不是很复杂,但是就我在家中经常使用的与工作无关的脚本而言,这是目前的领导者。


    在遥远的过去,我决定将Web主机的public_html目录的所有文件放入一个Subversion存储库中。然后我写了一个脚本,其中:

  • 创建,安装和格式化RAM磁盘。
  • 将存储库的主干导出到RAM磁盘。
  • 调用rsync将所有更改的文件从RAM磁盘上载到我的托管服务提供商。我使用公钥/私钥对来避免每次键入登录信息的麻烦。
  • 卸载RAM磁盘。
  • 因此,将更新从存储库推送到服务器实际上是"一键式"操作。

    最令脚本满意的是,最初,它不是大型项目,而是Shell脚本练习。但是,它可能节省了我无数的工作时间,并且使更新网站的前景变得几乎没有压力,这可能比计算机上的任何其他软件都要多。


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #!/usr/bin/perl
    use strict;
    use utf8;
    use Encode;
    use File::Find;
    binmode STDOUT, ':utf8';
    sub orderly {
        my ($x, $y) = @_{$a, $b};
        if (my $z = $x <=> $y) {return $z}
        $x = length $a;
        $y = length $b;
        my $z = $x < $y ? $x : $y;
        if (substr($a, 0, $z) eq substr($b, 0, $z)) {
            return $y <=> $x;
        }
        else {
            return $a cmp $b;
        }
    }
    my %conf = map +($_ => 0), split //, 'acsxL';
    sub Stat {$conf{L} ? lstat : stat}
    my @dirs = ();
    while (defined ($_ = shift)) {
        if ($_ eq"--") {push @dirs, @ARGV; last}
        elsif (/^-(.*)$/s) {
            for (split //, $1) {
                if (!exists $conf{$_} or $conf{$_} = 1 and $conf{a} and $conf{s}) {
                    print STDERR"$0 [-a] [-c] [-s] [-x] [-L] [--] ...
    ";
                    exit 1;
                }
            }
        }
        else {push @dirs, $_}
    }
    s/\/*$//s for @dirs;  # */ SO has crappy syntax highlighting
    @dirs = qw(.) unless @dirs;
    my %spec = (follow => $conf{L}, no_chdir => 1);
    if ($conf{a}) {
        $spec{wanted} = sub {
            Stat;
            my $s = -f _ ? -s _ : 0;
            decode(utf8 => $File::Find::name) =~ /^\Q$dirs[0]\E\/?(.*)$/s;
            my @a = split /\//, $1;
            for (unshift @a, $dirs[0]; @a; pop @a) {
                $_{join"/", @a} += $s;
            }
        };
    }
    elsif ($conf{s}) {
        $spec{wanted} = sub {
            Stat;
            $_{$dirs[0]} += -f _ ? -s _ : 0;
        };
    }
    else {
        $spec{wanted} = sub {
            Stat;
            my $s = -f _ ? -s _ : 0;
            decode(utf8 => $File::Find::name) =~ /^\Q$dirs[0]\E\/?(.*)$/s;
            my @a = split /\//, $1;
            ! -d _ and pop @a;
            for (unshift @a, $dirs[0]; @a; pop @a) {
                $_{join"/", @a} += $s;
            }
        };
    }
    if ($conf{x}) {
        $spec{preprocess} = sub {
            my $dev = (Stat $File::Find::dir)[0];
            grep {$dev == (Stat"$File::Find::dir/$_")[0]} @_;
        };
    }
    while (@dirs) {
        find(\%spec, $dirs[0] eq"" ?"/" : $dirs[0]);
        $_{""} += $_{$dirs[0]} if $conf{c};
        shift @dirs;
    }
    $_{$_} < 1024 ** 1 ? printf"%s ?%-6.6sB? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 0), $_ :
    $_{$_} < 1024 ** 2 ? printf"%s ?%-6.6sK? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 1), $_ :
    $_{$_} < 1024 ** 3 ? printf"%s ?%-6.6sM? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 2), $_ :
    $_{$_} < 1024 ** 4 ? printf"%s ?%-6.6sG? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 3), $_ :
    $_{$_} < 1024 ** 5 ? printf"%s ?%-6.6sT? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 4), $_ :
    $_{$_} < 1024 ** 6 ? printf"%s ?%-6.6sP? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 5), $_ :
    $_{$_} < 1024 ** 7 ? printf"%s ?%-6.6sE? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 6), $_ :
    $_{$_} < 1024 ** 8 ? printf"%s ?%-6.6sZ? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 7), $_ :
                         printf"%s ?%-6.6sY? %s
    ", $_{$_}, sprintf("%6.6f","$_{$_}" / 1024 ** 8), $_
        for grep {$_{$_} > 0} sort orderly keys %_;

    我将其保存在~/bin/dush中,它充当du -h / du | sort -n混合形式:一次排序并提供人类可读的大小。对于查找占用磁盘空间的内容非常有用。

    与此相类似,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/perl
    $t = 1;
    %p = map {$_ => ($t *= 1024)} qw(K M G T P E Z Y);
    $t = 4707319808;
    if (@ARGV) {
        if (($_ = shift) =~ /^-*dvd/i) {$t = 4707319808}
        elsif (/^-*cd[^w]*$/i) {$t = 737280000}
        elsif (/^-*cd/i) {$t = 681984000}
        elsif (/^-*([\d.]+)([kmgtpezy])/i) {$t = $1 * ($p{"\U$2"} || 1)}
        elsif (/^-*([\d.]+)/) {$t = $1}
        else {unshift @ARGV, $_}
    }
    ($q, $r, $s) = (0, ($ENV{COLUMNS} || 80) - 13, $t);
    while (<>) {
        chomp, stat;
        unless (-e _) {
            print STDERR"$_ does not exist
    ";
            next;
        }
        if (($s += -s _) > $t) {
            $s && $s < $t && printf"-%7s %s
    ",
                sprintf("%2.3f%%", 100 * ($t - $s) / $t), $t - $s;
            printf"-----------%d%*s
    ", ++$q, $r,"-" x $r;
            $s = -s _;
        }
        printf"%8s %s
    ",
            sprintf("%3.3f%%", $s * 100 / $t),
            /.{4}(.{$r})$/s ?"...$1" : $_;
    }
    $s && $s < $t && printf"-%7s %s
    ",
        sprintf("%2.3f%%", 100 * ($t - $s) / $t), $t - $s;

    我将其另存为~/bin/fit。当我归档一堆文件时,我运行ls | fitls | fit -cdrw来帮助确定它们是否适合DVD / CD / CDRW,如果不适合,则在哪里拆分。


    我编写了一个python程序来计算我公寓的共同支出,并输出一个整洁的小网格,以室友作为列,支出类别作为行,并在调整了他对共同支出的贡献后,每个室友欠了多少租金。我们已经有一段时间分享这种方式了,但是在月底才将原始总数相加。我需要更精细的控制。每个行项目最多可以有8次击键,这比excel好得多。我当时是在拼命地寻求阻止一个室友将每月预算的25%用于饮料的每月趋势...


    运行WinXP,我似乎从来没有时间开始进行碎片整理并等待它完成。因此,我编写了自己的脚本来启动XP的内置defrag.exe,并计划使其运行良好。将结果保存到C: Temp中的日志文件中,以供以后查看。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    @echo off

    GOTO :MAIN
    ###########################################################
    #
    #  Reason:
    #     This script runs the defrag utility.
    #
    #  Suggestion:
    #     Schedule this script to run daily (via schtasks)
    #
    #     Example:
    #        SCHTASKS /Create /SC DAILY /ST 03:00:00
    #                 /TR "C:\path\to\DAILY_DEFRAG.BAT" /TN"Daily Defrag of C Drive"
    #
    #     Example:
    #        AT 03:00 /every:Su,M,T,W,Th,F,Sa C:\path\to\DAILY_DEFRAG.BAT
    #
    #  Required OS:
    #     Windows XP or Windows Server 2003
    #
    #  Required files:
    #     DEFRAG.EXE
    #
    #
    ###########################################################

    :MAIN

       :: Output a listing of scheduled tasks
       SCHTASKS /QUERY /V > C:\temp\schtasks.out



       :: *****************************************************
       :: * SITE SPECIFIC Program Parameters                  *
       :: *****************************************************
       :: * Drive to defrag
            SET TARGET=C:

       :: * Log file
            SET LOGFILE=C:\temp\defrag.log


       :: *****************************************************
       :: * No editable parameters below this line            *
       :: *****************************************************


       SETLOCAL


       :: Announce intentions
       echo.
       echo Beginning defragmentation of disk %TARGET%
       echo ----------------------------------------------

       echo.
       for /f"tokens=1 delims=_" %%a in ('date /t') do set NOW=%%a
       for /f"tokens=1 delims=_" %%a in ('time /t') do set NOW=%NOW% %%a
       echo  Start time: %NOW%

       :: Run the defrag utility
       C:\WINNT\SYSTEM32\defrag.exe %TARGET% -f -v > %LOGFILE%

       echo.
       for /f"tokens=1 delims=_" %%a in ('date /t') do set NOW=%%a
       for /f"tokens=1 delims=_" %%a in ('time /t') do set NOW=%NOW% %%a
       echo    End time: %NOW%

       echo.
       echo ----------------------------------------------
       echo Defrag complete.
       echo.


    :END


    我有一个版本控制脚本,该脚本将目录作为参数,
    并将所有文件递归复制到../dirname/DATE/TIME/

    显然,这是一种糟糕的做法,但是在安装实际版本控制程序包之前非常方便。


    每个项目都有一个类似的backup.sh,仅对源文件进行tar和gzip压缩,然后将其移动到快照目录中并使用时间戳进行标记:project-mmddyy-hhmmss。对于提交之间的编码很有用。


    考虑到第一个孩子的名字时,我写了一个简单的Ruby脚本来帮助我和我的妻子。它生成了所有名称组合,并对照我要避免的姓名缩写黑名单检查姓名缩写,不包括不符合我的条件的姓名。对于一个书呆子的父亲来说,这似乎是一件适当的事情,实际上被证明是非常有价值和有用的。

    除此之外,我还编写了一些Python脚本,它们是我每天都使用的IRC机器人。一个通过正则表达式匹配将URL保存为美味。另一个充当简单的IRC Twitter界面,使我可以检查供稿并发布更新。


    可以轻松掌握ps结果的脚本:

    #!/usr/bin/php -f


    编写了一个仅了解字体的bash脚本,尽管其文件名无用,但仍能返回大约1万种字体,并查找某些关键字,但不会返回很多误报。花了一段时间才能运行,在时髦的iMac上大约需要一分钟,但是在过去几年中,它大概为我节省了50个小时。


    这样可以在不使用大量空间的情况下保留20天的差异备份。使用链接根据需要复制和rsync副本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/bin/bash                                                                                                                                                                                                                            


    BACKUPDIR=/media/proxy/store/backups/                                                                                                                                                                                                  

    [ ! -d $BACKUPDIR ] && { echo"BACKUP DIRECTORY NOT AVAILABLE!"; exit; }                                                                                                                                                              

    dobackup() {                                                                                                                                                                                                                          
            SDIR=$2                                                                                                                                                                                                                        
            PARENTDIR=$1                                                                                                                                                                                                                  
            echo"BACKING UP $PARENTDIR/$SDIR to $BACKUPDIR"                                                                                                                                                                              
            bnum=20
            count=$bnum
            [ -d ${BACKUPDIR}${SDIR}.$bnum ] && {  mv ${BACKUPDIR}${SDIR}.$bnum ${BACKUPDIR}${SDIR}.tmp; }
            until [ $count -eq 1 ]; do
                    let lastdir=$count-1
                    [ -d ${BACKUPDIR}${SDIR}.$lastdir ] && { mv ${BACKUPDIR}${SDIR}.$lastdir ${BACKUPDIR}${SDIR}.$count; }
                    let count-=1
            done
            cp -al  ${BACKUPDIR}${SDIR}.0  ${BACKUPDIR}${SDIR}.1
            rsync -a --delete --bwlimit=2000  $PARENTDIR/$SDIR ${BACKUPDIR}${SDIR}.0
    }

    for backup in $(cat /sbin/backup.directories); do
            PDIR=$(echo $backup | awk -F '::' {'print$1'})
            DIR=$(echo $backup | awk -F '::' {'print$2'})
            dobackup $PDIR $DIR
    done

    exit;


    cat /sbin/backup.directories
    /media/warehouse::Archive
    /media/warehouse::concept


    一个随机计时器上的警报框保证每小时至少弹出一次,以提醒我进行一些俯卧撑。

    我在部队时用过它。

    我还为我和其他任何人编写了架构规则(http://architecturerules.org)。


    我喜欢git如何弄清楚何时减少使用,subversion没有该功能,所以我想在分页器中轻松获得彩色输出。 cgrep别名使我可以快速选择。没有它,有时我会得到原始颜色输出。

    我也通过代码进行grepping时,不喜欢看到某些结果,例如.svn ctags二进制文件

    1
    grep -R sourcecodetext sourcedir | nosvn

    以下是我的配置文件中的内容

    猫.bash_profile

    1
    2
    3
    4
    5
    6
    alias nosvn="grep -v "\.svn\|tags\|cscope\|Binary""
    alias less="less -R"
    alias diff="colordiff -u"
    alias cgrep="grep --color=always"

    export GREP_OPTIONS='--color=auto'

    猫箱/ gitdiffwrapper

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash

    old_file=$1
    tmp_file=$2
    old_hex=$3
    old_mode=$4
    new_file=$5
    new_mode=$6

    colordiff -u $old_file $tmp_file

    猫.gitconfig

    1
    2
    [diff]
        external = $HOME/bin/gitdiffwrapper

    cat .subversion_config | grep ^ diff-cmd

    1
    diff-cmd = /usr/bin/colordiff

    1
    2
    3
    4
    5
    copy con c.bat
    c:
    cd\
    cls
    ^Z

    名为assignIisSite_ToAppPool.js

    当您要确保正确映射某些资源时,此功能非常有用。

    :)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SetAppPool("W3SVC/1059997624/Root","MyAppPool");



    function SetAppPool(webId, appPoolName)
    {
    var providerObj=GetObject("winmgmts:/root/MicrosoftIISv2");
    var vdirObj=providerObj.get("IIsWebVirtualDirSetting='" + webId +"'");
    vdirObj.AppPoolId=appPoolName;
    vdirObj.Put_();
    }

    我写了一个要在Linux中使用的文件提取工具,该工具可以提取大约20种不同的文件格式并使用文件内容,而不是文件名。

    该工具非常流行,我经常从我的博客中下载该工具。在这里获取:

    • E-提取任何存档

    我为基于Debian的系统编写了一个小的shell脚本tapt。尤其是Ubuntu的。它基本上是将所有" apt-get"活动发布到您的Twitter帐户。它可以帮助我跟踪在Ubuntu系统中安装/删除程序的时间和内容。为此,我创建了一个新的Twitter帐户并将其设为私有。真的很有用。此处提供更多信息:http://www.quicktweaks.com/tapt/


    最佳现实生活剧本?

    我:(进入房间)"老板,我要加薪。"

    老板:(从桌子后面提供椅子)"加薪?请拿我的工作!"

    再说一遍,这可能是最糟糕的脚本!


    一个简单的Python脚本,它将行尾从Unix转换为我卡在system32目录中的Windows。它已经丢失了好几个月了,但是基本上它可以将已知的基于文本的文件类型列表转换为Windows行尾,并且您可以指定要转换的文件或通配符列表的所有文件。


    我有一个批处理文件,该文件建立了一个VPN连接,然后进入一个无限循环,每五分钟对连接另一侧的计算机执行一次ping操作,这样,如果我不生成,VPN服务器就不会由于不活动而断开连接一段时间内该连接上的所有流量。


    我的下载目录中的Rakefile,其中包含将文件从所述目录复制到外部驱动器上各自媒体档案的任务。考虑到我的互联网速度和存储容量,我每周要花几个小时来复制和适当重命名hellanzb下载的每片媒体(完全合法,我可能会添加)。

    同一文件中的另一个非常有用的任务是登录并从IMDB中刮除我拥有的所有媒体的剧集列表/唱片目录,然后检查NewzBin中是否有填补我所有漏洞的报告。

    总而言之,这意味着我绝对不需要做任何事情,而作为交换,我每天早晨醒来的媒体都比当天坐在外部硬盘驱动器上消耗的媒体还要多。

    我是否提到这完全是完全合法的? d-:

    我可能会将所有内容合并到一种命令行媒体管理器/播放器(将内容分发给mplayer)中,并在有空的时候将其发布在GitHub上。


    一个简单的全能shell函数。
    就在我懒得思考我要做什么的时候。

    当我只浏览一些随机目录时非常有用,而且我必须从ls切换到cd,然后再切换到不太固定的目录。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    en() {
    if [[ -z $1 ]] ; then
    ls '.'

    elif [[ -d $1 ]] ; then
    cd $1

    elif [[ -f $1 ]] ; then
    less <$1
    fi
    }

    [email protected][email protected] =>修改主机文件,以通过LAN或WAN地址。


    我写了一份cron作业来获取我父亲路由器的IP地址并将其ftp到一个安全位置,因此当他需要帮助时,我可以将其远程桌面安装并修复他的组件。


    动漫CRC32校验和:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/python                                                                                                                                                                                  

    import sys, re, zlib

    c_null="^[[00;00m"
    c_red="^[[31;01m"
    c_green="^[[32;01m"

    def crc_checksum(filename):
        filedata = open(filename,"rb").read()
        sum = zlib.crc32(filedata)
        if sum < 0:
            sum &= 16**8-1
        return"%.8X" %(sum)

    for file in sys.argv[1:]:
        sum = crc_checksum(file)
        try:
            dest_sum = re.split('[\[\]]', file)[-2]
            if sum == dest_sum:
                c_in = c_green
            else:
                c_in = c_red
            sfile = file.split(dest_sum)
            print"%s%s%s   %s%s%s%s%s" % (c_in, sum, c_null, sfile[0], c_in, dest_sum, c_null, sfile[1])
        except IndexError:
            print"%s   %s" %(sum, file)


    我使用一个DOS程序,如果超过了某个日期,它将出错。我只是查看了用于启动的批处理文件并对其进行了更改,因此它将首先将日期更改为2000,然后运行该程序。在程序退出时,它会将日期更改回更改之前的日期。


    有时我忘记了我刚刚在目录中创建的最新文件,但是ls命令将仅显示目录中的每个文件,我只想要一些最新文件,因此将其放在.cshrc中

    1
     ls -l -t | awk 'NR<15{print $0}'

    (实际上,它位于名为lt的文件中,而在.cshrc中,其设置为:别名lt'?/ lt')

    所以现在lt仅显示一些文件。


    一个执行文件遍历并打印我的目录树(按磁盘使用情况排序)的python脚本。


    早在2005年,我就使用了Gentoo Linux,并使用了许多名为genlop的小程序向我展示了我在gentoo盒子上出现(安装)的东西的历史。为了简化我的工作,我编写的不是一个小的python脚本,而是一个很大的脚本,但是那时我才开始使用python:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
        #!/usr/bin/python
    ##############################################
    # Gentoo emerge status              #  
    # This script requires genlop,           #  
    # you can install it using `emerge genlop`.  #
    # Milot Shala <[email protected]>        #
    ##############################################

    import sys
    import os
    import time

    #colors
    color={}
    color["r"]="\x1b[31;01m"
    color["g"]="\x1b[32;01m"
    color["b"]="\x1b[34;01m"
    color["0"]="\x1b[0m"


    def r(txt):
       return color["r"]+txt+color["0"]
    def g(txt):
       return color["g"]+txt+color["0"]
    def b(txt):
       return color["b"]+txt+color["0"]

    # View Options
    def view_opt():  

       print
       print
       print g("full-info - View full information for emerged package")
       print g("cur - View current emerge")
       print g("hist - View history of emerged packages by day")
       print g("hist-all - View full list of history of emerged packages")
       print g("rsync - View rsync history")
       print g("time - View time for compiling a package")
       print g("time-unmerged - View time of unmerged packages")
       print
       command = raw_input(r("Press Enter to return to main"))
       if command == '':
          c()
          program()
       else:
          c()
          program()

    # system command 'clear'
    def c():
       os.system('clear')


    # Base program
    def program():
       c()
       print g("Gentoo emerge status script")
       print ("---------------------------")
       print

       print ("1]") + g(" Enter options")
       print ("2]") + g(" View options")
       print ("3]") + g(" Exit")
       print
       command = input("[]>")


       if command == 1:  
          print
          print r("""First of all  you must view options to know what to use, you can enter option name ( if you know any ) or type `view-opt` to view options.""")
          print
          time.sleep(2)
          command = raw_input(b("Option name:"))
          if (command == 'view-opt' or command == 'VIEW-OPT'):
             view_opt()


          elif command == 'full-info':
             c()
             print g("Full information for a single package")
             print ("-------------------------------------")
             print
             print b("Enter package name")
             command=raw_input(">")
             c()
             print g("Full information for package"), b(command)
             print ("-----------------------------------")
             print
             pack=['genlop -i '+command]
             pack_="".join(pack)
             os.system(pack_)
             print
             print r("Press Enter to return to main.")
             command=raw_input()
             if command == '':
                c()
                program()

             else:
                c()
                program()


          elif command == 'cur':
             if command == 'cur':
                c()
                print g("Current emerge session(s)")
                print ("-------------------------")
                print
                print b("Listing current emerge session(s)")
                print
                time.sleep(1)
                os.system('genlop -c')
                print
                print r("Press Enter to return to main.")
                command = raw_input()
                if (command == ''):
                   c()
                   program()

                else:
                   c()
                   program()


          elif command == 'hist':
             if command == 'hist':
                c()
                print g("History of merged packages")
                print ("---------------------------")
                print
                time.sleep(1)
                print b("Enter number of how many days ago you want to see the packages")
                command = raw_input(">")
                c()
                print g("Packages merged"+b(command)+ g(" day(s) before"))
                print ("------------------------------------")
                pkg=['genlop --list --date '+command+' days ago']
                pkg_="".join(pkg)
                os.system(pkg_)
                print
                print r("Press Enter to return to main.")
                command = raw_input()
                if command == '':
                   c()
                   program()

                else:
                   c()
                   program()


          elif command == 'hist-all':
                c()
                print g("Full history of merged individual packages")
                print ("--------------------------------------")
                print
                print b("Do you want to view individual package?")
                print r("YES/NO?")
                command = raw_input(">")
                print
                if (command == 'yes' or command == 'YES'):
                   print g("Enter package name")
                   command = raw_input(">")
                   print
                   pkg=['genlop -l | grep '+command+ ' | less']
                   pkg_="".join(pkg)
                   os.system(pkg_)
                   print
                   print r("Press Enter to return to main")
                   command = raw_input()
                   if command == '':
                      c()
                      program()
                   else:
                      c()
                      program()

                elif (command == 'no' or command == 'NO'):
                   pkg=['genlop -l | less']
                   pkg_="".join(pkg)
                   os.system(pkg_)
                   print
                   print r("Press Enter to return to main")
                   command = raw_input()
                   if command == '':
                      c()
                      program()

                   else:
                      c()
                      program()

                else:
                   c()
                   program()


          elif command == 'rsync':
             print g("RSYNC updates")
             print
             print
             print
             print b("You can view rsynced time by year!")
             print r("Do you want this script to do it for you? (yes/no)")
             command = raw_input(">")
             if (command == 'yes' or command == 'YES'):
                print
                print g("Enter year i.e"), b("2005")
                print
                command = raw_input(">")
                rsync=['genlop -r | grep '+command+' | less']
                rsync_="".join(rsync)
                os.system(rsync_)
                print
                print r("Press Enter to return to main.")
                c()
                program()
             elif (command == 'no' or command == 'NO'):
                os.system('genlop -r | less')
                print
                print r("Press Enter to return to main.")
                command = raw_input()
                if command == '':
                   c()
                   program()

                else:
                   c()
                   program()

          elif command == 'time':
             c()
             print g("Time of package compilation")
             print ("---------------------------")
             print
             print

             print b("Enter package name")
             pkg_name = raw_input(">")
             pkg=['emerge '+pkg_name+' -p | genlop -p | less']
             pkg_="".join(pkg)
             os.system(pkg_)
             print
             print r("Press Enter to return to main")
             time.sleep(2)
             command = raw_input()
             if command == '':
                c()
                program()

             else:
                c()
                program()


          elif command == 'time-unmerged':
             c()
             print g("Show when package(s) is/when is unmerged")
             print ("----------------------------------------")
             print

             print b("Enter package name:")
             name = raw_input(">")
             pkg=['genlop -u '+name]
             pkg_="".join(pkg)
             os.system(pkg_)
             print
             print r("Press Enter to return to main")
             time.sleep(2)
             command = raw_input()
             if command == '':
                c()
                program()

             else:
                c()
                program()

          else:
             print
             print r("Wrong Selection!")
             time.sleep(2)
             c()
             program()


       elif command == 2:
          view_opt()
          command = raw_input(r("Press Enter to return to main"))
          if command == '':
             c()
             program()
          else:
             c()
             program()


       elif command == 3:
          print
          print b("Thank you for using this script")
          print
          time.sleep(1)
          sys.exit()

       else:
          print
          print r("Wrong Selection!")
          time.sleep(2)
          c()
          program()
          command = ("")


    program()

    对于那些不记得我们在unix上的位置或正在使用哪个SID的人。
    在您的.profile中将其弹出。

    1
    2
    3
    4
    5
    6
    7
    8
    function CD
    {
       unalias cd
       command cd"$@" && PS1="\${ORACLE_SID}:$(hostname):$PWD>"
       alias cd=CD
    }

    alias cd=CD

    作为计划任务,要从整个驱动器d:复制任何修改过的/新文件到备份驱动器g :,并记录复制的文件。它也有助于我跟踪自己在什么时候做了什么。

    justdate是一个用于在屏幕上打印日期和时间的小程序

    G:

    光盘 drive_d

    d:

    光盘

    输入g: backup_d.log >> g: logs backup_d.log

    回声========================================> g: backup_d.log

    d: mu bmutil justdate >> g: backup_d.log

    xcopy / s / d / y / c。 g: drive_d >> g: backup_d.log


    我经常使用MS Word宏,该宏将获取源代码文件,将其格式化为横向页面上两列等宽的列,对行进行编号,并添加公司页眉和页脚信息,例如文件名,打印日期,页码和保密声明。

    在页面的两面打印都使用约1/4的纸作为等效的lpr命令。 (是否还有人使用lpr ??)


    好吧,一个AutoHotkey脚本使我的生活仅需一个键盘即可:

  • 内常用的应用,文件夹等
    一胜一赢的组合。这通常意味着激活已启动的应用程序,否则启动该应用程序
  • 按住Ctrl的"双击"键启动Launchy-从我不常用的应用程序中获得了一些按键
  • 在Windows资源管理器(XP)中添加一堆缺少的键盘快捷键,例如创建新文件夹,切换隐藏文件/显示文件扩展名,Ctrl-Enter以在emacs中将任何文件作为文本文件打开,打开命令行窗口(cmd和cygwin shell)使用当前路径集等。
  • Windows操作:移动,调整大小,发送到下一个监视器,最大/最小化,始终在顶部切换,更改透明度等,所有这些仅通过组合键即可完成
  • 诸如休眠,弹出外部驱动器,谷歌任何选定的单词(在任何使用ctrl-c作为副本的应用程序中),关机计时器等杂项,等等。仅需一个按键即可完成所有操作
  • 这个键盘脚本使我很快乐。实际上,这也是我仍然使用Windows而不是linux作为主要平台的主要原因,因为autohotkey仅适用于Windows。


    1
    alias snoot='find . ! -path"*/.svn*" -print0 | xargs -0 egrep '

    我有一个每天早上运行的批处理文件,它会启动一个浏览器,其中的选项卡加载到我每天要检查的所有网站(Woot,Dilbert,Doonesbury,UserFriendly;季节性,NY Mets得分和electoral-vote.com,以及一些需要定期访问以保持会员资格活跃的网站)