- 浏览: 84875 次
文章分类
最新评论
-
bailangfei3344:
自我介绍 -
regionwar:
你好,转化为人为:1、不该加锁的不要加锁:局部变量,单线程占用 ...
关于java锁机制的优化 -
danni505:
希望能交流:
msn:danni-505#hotmail.co ...
关于java锁机制的优化 -
ouspec:
收藏的东西不错。
TOP500 -
willpower:
The idea behind is e-sync IO do ...
Rethink the sync
如何创建批处理文件?
不要听了批处理文件就感到很神气,其实这东西很简单的.你用过记事本没有?用过? 好的.将记事本打开,什么都不用写,然后选择文件,保存.保存类型选择所有文件,文件名则命名为 *.bat 这个*代表是文件名,你可以随便的起.保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标.这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.
批处理文件中的命令是什么?
批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释.批处理顾名思义就是一大堆东西堆在一起处理.换句话说就是往里面写一条条dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果.只不过用批处理写好之后,要运行只要双击下就可以运行了.而不用再一遍一遍的重复的往里面打命令.这就是批处理文件的好处.
除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且编写语言十分不规范.
批处理语法:
先讲个最基本的东西 @echo off
echo的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echo off 这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。如果第一句用的是ECHO OFF,那么在执行完批处理文件以后不会显示命令提示符。
举个例子:如果我们先创建一个1.bat文件,往里面输入:
dir 然后保存在c:\下.然后我们运行cmd,进入c盘根目录下,输入1.bat,则显示:
C:\>dir
驱动器 C 中的卷没有标签。
卷的序列号是 0C5D-07FF
C:\ 的目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
...........
C:\
如果将1.bat内容修改成
echo off
dir
然后再在cmd里输入1.bat,则会显示
C:\>echo off //因为运行了echo off,所以没有显示dir命令,直接显示了结果
驱动器 C 中的卷没有标签。
卷的序列号是 0C5D-07FF
C:\ 的目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
.....
C:\
如果将1.bat文件修改成:
@echo off
dir
则显示成:
C:\>1.bat //与前面不同,并没有显示echo off,原因是加了@,所以不显示@后面的内容.又因为加
//了echo off,所以后面的命令不显示,直接显示结果
驱动器 C 中的卷没有标签。
卷的序列号是 0C5D-07FF
C:\ 的目录
2004-08-25 00:45 <DIR> WINDOWS
2004-08-25 00:51 <DIR> Documents and Settings
....
C:\
通过以上的比较,相信你对echo off命令已经充分掌握了.现在已经1点了...写得累啊!!!洗澡睡觉去了
----------------------
早晨6点就被拉起来了...我命苦啊,那么继续写吧
----------------------
接下来讲的是call命令:
call是打电话的call,而不是"喔靠"的靠:).call的意思为调用.假如有2个批处理文件a.bat和b.bat.如果我想运行a.bat的当中运行b.bat.如何运行呢?其实很简单,只要在a.bat文件中输入call命令,则可以在a.bat运行的当中,运行b.bat,等b.bat运行完之后,继续执行a.bat
call命令格式:
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理程序所需的命令行信息。
举例如下,我们在c盘根目录下创建a.bat文件,内容为:
echo this is a.bat
call d:\b.bat
echo done
然后在d盘根目录下创建b.bat,内容为:
echo this is b.bat
保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:
C:\>a.bat
C:\>echo this is a.bat
this is a.bat
C:\>call d:\b.bat
C:\>echo this is b.bat
this is b.bat
C:\>echo done
done
由例子很容易看出来,是先运行a.bat的内容,直到遇到call b.bat后,则调用b.bat,运行完b.bat后,再返回a.bat接着运行call b.bat后面的echo done语句,直至将a.bat的所有批处理命令运行完.
注:里面有个[batch-parameters]里面的所指的参数是什么,知道的朋友能否告知,不胜感激.
PAUSE 命令
暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。
rem命令:
表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释).
同时你可以用两个冒号来替代rem.如: ::等同于一个rem.但他们有个区别,就是用::作注释的话他是不回显的,即使你打echo on强制回显也没有同的.同时rem可以在config.sys中加注释.
语法: rem[commnet]
批处理文件参数:
有点变成基础的人都知道函数有参数.批处理文件也有参数.
我打个比方,希望能帮助没有语言基础的人也能看的非常明白.
我从例子里开始吧.首先在c盘根目录下创建一个批处理文件 a.bat,里面输入内容
echo %1
然后打开cmd,然后进入c盘根目录.输入:a "this is a canshu"
得到结果如下:
C:\>a.bat "this is a test"
C:\>echo "this is a test"
"this is a test"
输入的a "this is a canshu"中,a为新建的a.bat的文件名a(后面的.bat可写也可不写),而a后面的 "this is a canshu"这句话就是参数,写在这的参数,在程序运行中就将参数自动放到批处理程序中去.那么放在什么位置呢?就是放在 %1的地方.
看了例子,让我们看看整个关于参数的定义如何:
批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。//我们上个程序的例子里就有%1,他就是参数,而输入中"this is a test"作为参数就直接放到%1的位置,于是程序就变成了 echo "this is a test".
再举几个例子帮助你理解:
C:根目录下一批处理文件名为b.bat,内容为:
@echo off
type %1 //type为dos中的输出命令,可以用来输出文本文件的内容,比如我们新建一个1.txt文件
//里面输入内容,保存.进cmd,如果输入1.txt则看不了1.txt文件内容,但是如果我
//想看怎么办呢?这时候可以用type命令,只要在cmd里输入type 1.txt就能显示
//1.txt文件中的内容了
type %2
那么运行C:\>b a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的批处理命令就变成了
@echo off
type a.txt
type b.txt
于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
没有编程基础的人可能要问,干什么要弄个参数啊?在后面加个参数多麻烦啊?直接往里面写不就好了啊?!其实这样想有对的方面也有错的方面.还是举个例子说明吧.
第一步还是在c盘根目录下新建一个批处理文件,我们取名仍为a.bat.往里面的内容输入为:
ping %1 //ping命令可以简单理解为测试一台机器开着还是没有开,如果开着的话,他就回给你回送回应.
然后进cmd,我们想测试下163的服务器是不是开着,则输入a www.163.com
对于知道ping命令的人,可以打ping进行检查,但如果想ping的人不知道ping命令怎么用,那怎么办啊?这时候你就可以把命令预先输入到批处理文件中,保存好,然后让不会用的人进cmd,运行你的批处理文件,文件名后面加上他要ping 的网站地址就行了.换句话说,他想ping 163就直接加163的网址,想ping sina就直接加sina的网址.这样只要输入一个参数,而不用改程序本身,整个程序的通用性就大大提高了.
这是对于一个简单的ping命令,你或许觉得用参数不值得,还是直接改不就好了啊.但如果程序有很多条,你一下找不到在哪改怎么办啊?所以,不管你是菜哥,菜弟,菜姐,菜妹,只要运行下,输入参数,结果自己就会出来,不用再象你一样,考虑怎么编写批处理文件.人家只要知道是输入什么东西能让批处理程序运行,而编写的人则想的是如何让不懂程序的人能运行程序.
批处理参数就这么简单,不知道你理解了没有?但如果你想深一步了解批处理参数,可以接着往下看,如果不想深入了解,知道现在这么多也就够了.
以下粉红色内容为网上资料.
====================================
因为参数只有1%-9%,但当我们要引用第十个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下:
初始状态, cmd 为命令名, 可以用 %0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过1次shift后, cmd 将无法被引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
&line; &line; &line; &line; &line; &line; &line; &line; &line; &line;
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针.
=================
if goto choice for高级语法
今天就写到这吧,我收拾收拾东西准备滚蛋回学校了.可能if goto choice for高级语法要在沈阳才能完成了,祝我好运吧.
======================
学校的"网吧"终于算重新开张了,抓紧时间把剩下的写完
if命令
说得通俗点,if就相当于我们白话里的如果.
举个例子:如果a喜欢b,那么a就要娶b. 这句话翻译成计算机语言就成了
if a喜欢b a就要娶b.
当然拉,计算机不可能理解a喜欢b,a就要娶b这两句话,这里只是举个例子让你方便理解.
if语句一共有3种模式,如下:
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
IF [NOT] ERRORLEVEL number command
NOT 指定只有条件为 false 的情况下, Windows XP 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true。
string1==string2 如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行 ELSE关键字后的命令的 ELSE 命令。
我们先讲解第一种:
IF [NOT] string1==string2 command
自然语句意思:如果string1==string2,那么执行command
下面再举个能实际应用的if语句.
自然语句:如果输入的参数为3,那么显示"a=3"
计算机语句:
@echo off
if "%1"=="3" echo "a=3"
或者写成
@echo off
if %1==3 echo "a=3"
注意:当要测试的时候,因在cmd底下,输入1.bat 3.因为这里用了是传递参数,具体看文章前部分"批处理文件参数".
第二种:
IF [NOT] EXIST filename command
这条命令用语检测文件是否存在.如果存在,执行command.如果不存在,则什么也不显示.
如:我们想检查e盘根目录下是否有一个叫2.txt的文件.如果存在,则显示exist.如果不存在,则什么也不显示.
批处理命令如下:
@echo off
if exist e:\2.txt echo "exist 2.txt"
第三种:
IF [NOT] ERRORLEVEL number command
这个我引用点资料,感觉别人写得更详细,引用部分为粉色字部分:
if errorlevel <数字> 待执行的命令
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
==== 注 ===========
返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:
if errorlevel 1 set el=1
if errorlevel 2 set el=2
if errorlevel 3 set el=3
if errorlevel 4 set el=4
if errorlevel 5 set el=5
...
当然, 也可以使用以下循环来替代, 原理是一致的:
for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e //此处为一个for循环,后面会继续 介绍到的,看不懂可以先跳过去
if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码.
另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了
choice命令
????
goto命令
for命令
for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.
语法:
FOR %variable IN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat
用for命令如下:
for %%t in (*.bat *.txt) do type %%t
%%t其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%%t就变成了*.bat *.txt了.do就是做的意思,执行type命令,而type后面是%%t,而%%t又是*.bat *.txt.所以原来这句命令的意思就变成了:
type *.bat *.txt
执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat和.txt的文件内容了.
这里要注意:in后面有个空格.
在xp底下,for命令扩展名被起用因此for的功能变得更加强大.下面讲一个真正的循环.
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)
里面第一个1在start的位置,意思是起始位置,第2个1在step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5在end的位置,意思是结束时的大小.
这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止.
这个有什么用呢?其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显"i am the best"这句话,重复显示10遍.那么for命令如下:
for /L %%e in (1,1,10) do echo "i am the best"
这时,cmd就会重复输入"i am the best"10遍.
===============================================
看完整篇文章了吗?咳...我写的不容易啊....
现在不知道你对bat有了什么样的理解,我现在的感觉就是bat就是dos命令的组合,你把dos命令全写进bat命令,只要运行下bat就会挨个执行dos命令,这无疑提供了不少的方便。
下面我再举些实例.
删除默认共享:
对于默认共享不知道你了解多少,反正留着是个隐患,现在唯一的办法好象只能做个bat文件进行删除.命令如下:
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete
net share e$ /delete
……
里面的c d e为你的盘符。如果你只有一个分区,那么写到net share c$ /delete为止就可以了。如果你有n个分区,那么就挨个写下去。
net share d$ /delete
net share e$ /delete
net share f$ /delete
net share g$ /delete……
登陆到局域网的机器快捷方式(对方机器有密码且为2000或以上系统)
net use \\192.168.0.1 [密码] /user:[用户名]
explorer \\192.168.0.1
bat文件备份注册表
set regfile=%date% //设置变量,下面出现%regfile%的都自动替换“当天date”
if exist "%regfile%" goto end //如果发现当天date命名的目录,跳到文件尾。
md temp //建temp目录
call 1.bat //调用1.bat
del 1.bat
ren 2.bat 1.bat
ren 3.bat 2.bat
ren 4.bat 3.bat
echo move "%regfile%" temp >4.bat //写 移动“当天date命名的目录”到temp的bat文件 。
md "%regfile%" //建当天date命名的目录
cd "%regfile%" //进入
reg export hkcu hkcu.reg //导出注册表
reg export hklm hklm.reg
//HKEY_CURRENT_USER 缩写hkcu 。存放当前用户个人数据
//HKEY_LOCAL_MACHINE 缩写hklm 。系统的核心数据
cd..
deltree /y temp >nul ////返回上级目录 ,删temp文件夹
:end
发表评论
-
字符编码笔记:ASCII,Unicode和UTF-8 (引用)
2009-01-07 10:39 924字符编码笔记:ASCII,Unicode和UTF-8 阮一峰 ... -
How to set up a simple LRU cache using LinkedHash
2008-11-03 18:05 1278How to set up a simple LRU cach ... -
Scalability?
2008-10-07 14:07 825严格上讲,scalability还没有正式定义, 甚至有人觉得 ... -
Cray Reminiscences
2007-08-29 15:54 790Kirk Pepperdine's attendence of ... -
lock-free
2007-06-18 22:06 9891. http://www.ibm.com/developer ... -
解决java.lang.OutOfMemoryError: PermGen space(转帖)
2007-06-05 18:07 3159解决方案就是:在启动服务器时加上指定PermGen区域的内存大 ... -
Performance...
2007-06-05 15:11 977« I used to work for... | Mai ... -
数据仓库
2007-04-18 10:38 1116... -
Expressions Transform
2007-04-13 11:13 1385Expressions, Conversion and Eva ... -
Java cleanup code
2007-04-03 12:20 1291Java shutdown hook guarantee th ... -
Java performance tunning
2007-04-03 11:37 936http://www.javaperformancetunin ... -
Running IE from command line
2007-04-03 10:58 1109Here's a simple way you can ru ... -
Unicode and UTF8
2007-04-03 10:27 907What is Unicode? Unicode provid ... -
Daemon Thread Notes
2007-04-03 09:16 26491. 只要程式中的non-Daemon thread都結束了. ... -
How to know the main class of a jar file?
2007-04-02 15:18 1027Easy. Here is an implementation ... -
Basics - Binary search
2007-03-26 15:53 963java 代码 public class Bin ... -
MergeSort
2007-03-23 17:26 835MergeSort is a sample solutio ... -
Graph data structure
2007-03-23 12:04 8721. adjacent matrix good for bor ... -
Functional Programming For The Rest of Us
2007-03-23 10:39 1284I like connect beautiful artic ... -
Functional Programming For The Rest of Us
2007-03-23 10:24 1062I like connect beautiful artic ...
相关推荐
spring-boot2-master <h1>YouTube ...<a href="https://www.javaguides.net/2019/02/spring-boot-2-angular-7-crud-example-tutorial.html" target="_blank">Spring Boot 2 + Angular 7 CRUD Example Tutorial</a>
对应于笔者的blog《SIMPLIS仿真软件2.1-SIMPLIS快速入门1》中的电路。仅用于教程,免费下载。
这个名为“iTextSharp.tutorial.VB.NET”的教程是专为VB.NET开发者设计的,旨在帮助他们掌握如何使用iTextSharp库来生成和操作PDF文件。在这个教程中,你将学习到如何将网页内容自动化地导出为PDF格式,这在报表生成...
* http://www.linux-tutorial.info/ - Linux 教程,学习 Linux 的不二之选 * http://www.linuxquestions.org/ - Linux 论坛,解决 Linux 相关问题 * http://www.linuxeden.com/ - Linux 教程和学习资源 * ...
本文为Source-Navigator的帮助文档。...文档地址: http://sourcenav.sourceforge.net/online-docs/index.html 下载地址: http://sourcenav.sourceforge.net/download.html 收录时间: 2009年03月19日
- AngularJS教程:[http://www.runoob.com/angularjs/angularjs-tutorial.html](http://www.runoob.com/angularjs/angularjs-tutorial.html) 以上步骤将指导您完成Ionic Cordova在Android环境下的安装配置及基本...
JDK1.8 ,IntelliJ IDEA 2020.1 x64, MySQL 5.5.40,...https://echarts.apache.org/zh/tutorial.html#5 分钟上手 ECharts 简单实用jieba https://blog.csdn.net/wbcg111/article/details/53191721 selenium基本实用 ...
used writing this tutorial. IN WINDOWS: Windows doesn’t come with a cvs-client, so if you haven’t installed wincvs yet, you need to download the CVS client WinCVS 1.2 ...
YOU CAN DOWNLOAD OTHER VERSION HERE http://downloads.php.net/pierre/ 详细说明 http://www.phpq.net/tutorial/xdebug.html
资源分类:Python库 所属语言:Python 资源全名:docker-tutorial-0.2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
自己在网络上看到并整理成CHM版本的。 原地址:http://www.family168.com/tutorial/springsecurity/html/springsecurity.html
Make sure that you have downloaded the latest version from the db4objects website: http://www.db4objects.com db4o may be used under the GNU General Public License, GPL. You should have ...
In the tutorial, most of the models were implemented with less than 30 lines of code. Before starting this tutorial, it is recommended to finish [Official Pytorch Tutorial]...
from the Codehenge Android development tutorial: http://www.codehenge.net/blog/ It is designed as a learning aid, and written for illustrative purposes. This project was developed in Eclipse, and ...
pytorch tutorials 保存于网页...Visit [ https://download.csdn.net/user/ldengjie/uploads ] to get the latest version pdf or mail to ldengjie@163.com to ask for printing and updating the latest version pdf.
用法该滑台和辅助材料是Dave Cheney的“入门入门”培训课程的一部分。 安装将此代码克隆到目录中git clone https://github.com/davecheney/introduction-用法此幻灯片和辅助材料是Dave Cheney编写的Go入门培训课程... ...
标题:OpenGL教程 ...原文参见:http://nehe.gamedev.net/,http://www.owlei.com/DancingWind/Course/Tutorial_01.htm。多谢以上二位。本人本意是减少大家查找工作量,如有不妥还请原作者原谅,并联系我删除。
插件介紹: 互动教程是最好的解决方案,但这需要花费大量时间,并且通常需要修改游戏代码才能使其发挥作用。最后,你可能会在一个平庸的教程上...教程链接:https://blog.csdn.net/zhangay1998/category_11189279.html
由于该网站500错误无法访问和下载,搜集了...亏了我的积分,还下载了http://jpcap.sourceforge.net/版本的,上传资源的人也不写明。烦躁。看来此版本的JPCAP快绝种了,留此备用。另外,亲测通过报告也在压缩包里附上。
from pymongo import MongoClient class MongoDBPipeline: def __init__(self): self.client = MongoClient('mongodb://localhost:27017/') self.db = self.client['mydatabase'] self.collection = self.db['...