小编Ben*_*oit的帖子

Windows命令解释器(CMD.EXE)如何解析脚本?

我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.

但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.

以下是我无法解决的示例问题:

  • 如何管理报价系统?我制作了一个TinyPerl脚本
    (foreach $i (@ARGV) { print '*' . $i ; }),编译它并以这种方式调用它:
    • my_script.exe "a ""b"" c"?输出是 *a "b*c
    • my_script.exe """a b c"""?输出它*"a*b*c"
  • 内部echo命令如何工作?在那个命令中扩展了什么?
  • 为什么我必须for [...] %%I在文件脚本中使用,但for [...] %I在交互式会话中?
  • 什么是转义字符,以及在什么情况下?如何逃脱百分号?例如,我怎么能%PROCESSOR_ARCHITECTURE%字面回声?我发现echo.exe %""PROCESSOR_ARCHITECTURE%有效,有没有更好的解决方案?
  • 如何%配对?例:
    • set b=a,echo %a %b% c%%a a c%
    • set a =b,echo %a %b% c%bb c%
  • 如果此变量包含双引号,如何确保变量作为单个参数传递给命令?
  • 使用 …

windows parsing cmd batch-file variable-expansion

132
推荐指数
5
解决办法
6万
查看次数

Oracle:如果行不存在,如何INSERT

在PL/SQL(oracle)中,如果行不存在,最简单的方法是什么?

我想要的东西:

IF NOT EXISTS (SELECT * FROM table WHERE name = 'jonny') THEN
  INSERT INTO table VALUES ("jonny", null);
END IF;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

注意:此表有2个字段,例如姓名年龄.但只有名字是PK.

oracle plsql

49
推荐指数
5
解决办法
11万
查看次数

CROSS JOIN是没有ON子句的INNER JOIN的同义词吗?

我想知道是否CROSS JOIN可以INNER JOIN在找到任何查询时安全地替换它.

INNER JOIN没有ONUSING完全一样的CROSS JOIN?如果是,那么CROSS JOIN发明的类型只是为了在查询中更好地表达意图吗?

这个问题的附录是:

哪有用在使用现代化的和广泛使用的DBMS的不同CROSS JOIN ... WHERE x, INNER JOIN ... ON ( x )INNER JOIN ... WHERE ( x )

谢谢.

sql inner-join cross-join

27
推荐指数
1
解决办法
3万
查看次数

Oracle Text不适用于NVARCHAR2.还有什么可能不可用?

我们将迁移一个应用程序以使其支持Unicode,并且必须在整个数据库的unicode字符集或存储在N [VAR] CHAR2中的unicode列之间进行选择.

我们知道如果我们选择NVARCHAR2,我们将不再有可能使用Oracle Text索引列内容,因为Oracle Text只能根据CHAR类型索引列.

除此之外,从Oracle收获的可能性是否可能出现其他重大差异?

此外,是否有可能在较新版本的Oracle中添加一些新功能,但只支持CHAR列或NCHAR列,但不支持两者?

谢谢您的回答.

注意Justin的回答:

谢谢您的回答.我将讨论你的观点,适用于我们的案例:

我们的应用程序通常单独存储在Oracle数据库中,并负责处理数据本身.连接到数据库的其他软件仅限于Toad,Tora或SQL开发人员.

我们还使用SQL*Loader和SQL*Plus与数据库通信以获取基本语句或在产品版本之间进行升级.我们还没有听说过有关NVARCHAR2的所有软件的任何具体问题.

我们也不知道我们客户中的数据库管理员想要在数据库上使用其他无法支持NVARCHAR2数据的工具,我们并不关心他们的工具是否可能会中断,毕竟他们都熟练工作并且可能会发现必要时还有其他工具.

你的最后两点对我们的案例更有洞察力.我们不使用Oracle的许多内置包,但它仍然会发生.我们将探讨这个问题.

如果我们wchar_t用于存储UTF-16 的应用程序(在Visual C++下编译)必须对所有已处理的数据执行编码转换,我们是否还会期望性能中断?

oracle unicode nvarchar character-encoding

23
推荐指数
1
解决办法
2万
查看次数

dot命令究竟能重复什么?

Vimmers知道.可以重复简单的更改.我试图建立一个可以重复或不重复的列表,但是有一个列表吗?

我试图列出我知道可重复的内容:它们都是正常模式命令:

  • 文本插入:a,A,i,I,o,O
  • 涉及寄存器文件进行修改:c,C,d,D,p,gp,P,gP,s,S,x,X
  • 其他文本的变化:J,gJ,r,gr,R,gR,gU,gu,gw,gq,g?,~,g~,<,>,=
  • 在可视模式下等效于这些操作.
  • 控制操作:C-A,C-X
  • gi将重复插入但 …

vim

23
推荐指数
1
解决办法
1920
查看次数

如何在SQLite中获取最后一个插入ID?

SQLite中是否有可用的内置函数来获取最后插入的行id.例如: - 在mysql中我们有LAST_INSERT_ID()这种功能.对于sqllite,任何可用于执行相同过程的函数.

请帮我.

谢谢

php sql sqlite function lastinsertid

18
推荐指数
3
解决办法
4万
查看次数

在执行搜索之前,Gnuwin32 find.exe会扩展通配符

我在Windows环境中使用Gnuwin32二进制文件.
当我想查找某种类型的文件时,我们说PDF,我通常运行:

find . -iname '*.pdf' -print
Run Code Online (Sandbox Code Playgroud)

这适用于任何UNIX系统.

find.exe . -iname "*.pdf" -print
Run Code Online (Sandbox Code Playgroud)

但是在Windows下,用双引号替换了单引号,它只在当前目录中没有pdf文件时才有效,否则*会扩展.

更糟糕的是:当前目录中只有一个PDF文件,它会扩展,没有语法错误,你会得到错误的结果.

我试着*用一个插入符号,一个反斜杠,一个明星本身,用双引号来避开它:对我来说没什么用.

真实的例子:

好的,这是我的所有文件:

C:\tmp>find . -type f
./a/1.pdf
./a/2.pdf
./a/aa/1.pdf
./b/1.pdf
./b/bb/1.pdf
./b/bb/2.pdf
Run Code Online (Sandbox Code Playgroud)

良好的行为,通配符没有扩大

C:\tmp>find . -iname "*.pdf"
./a/1.pdf
./a/2.pdf
./a/aa/1.pdf
./b/1.pdf
./b/bb/1.pdf
./b/bb/2.pdf

C:\tmp>cd a
Run Code Online (Sandbox Code Playgroud)

注意,不一致的行为,扩展了通配符:

C:\tmp\a>find . -iname "*.pdf"
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

C:tmp\a>cd ..\b
Run Code Online (Sandbox Code Playgroud)

注意,不一致的行为,扩展了通配符:

C:\tmp\b>find . -iname "*.pdf"
./1.pdf
./bb/1.pdf
Run Code Online (Sandbox Code Playgroud)

谢谢

find gnuwin32 expansion

17
推荐指数
2
解决办法
4635
查看次数

最短的操作序列,将文件树转换为另一个文件树

给定两个文件树A和B,是否可以确定最短的操作序列或为了将A转换为B所必需的短序列操作

操作可以是:

  1. 创建一个新的空文件夹
  2. 使用任何内容创建新文件
  3. 删除文件
  4. 删除一个空文件夹
  5. 重命名文件
  6. 重命名文件夹
  7. 将文件移动到另一个现有文件夹中
  8. 在另一个现有文件夹中移动文件夹

当A和B在相同的文件夹结构中具有相同内容(或相同大小相同CRC)和相同名称的相同文件时,它们是相同的.

这个问题一直困扰着我.目前我有以下基本想法:

  • 计算数据库:
    • 存储文件名及其CRC
    • 然后,查找没有子文件夹的所有文件夹,并从它们包含的文件的CRC计算CRC,并从它们包含的文件的总大小计算大小
    • 升级树以为每个父文件夹创建CRC
  • 使用具有数据库A和数据库B的以下循环:
    • 计算A∩B并从两个数据库中删除此交集.
    • 使用内部联接在A和B中查找匹配的CRC,首先按文件夹desc排序
    • 当有结果时,使用第一个结果使文件夹或文件移动(如果需要可能创建新文件夹),从两个数据库中删除结果的源行.如果有移动,则更新db A中新位置的父文件夹的CRC.
    • 然后删除数据库A中引用的所有文件和文件夹,并创建数据库B中引用的那些

但是我认为这实际上是一种不理想的方式.你能给我什么建议?

谢谢!

algorithm edit-distance filetree

16
推荐指数
1
解决办法
657
查看次数

有关使用显式ANSI JOIN和隐式连接的Oracle官方建议吗?

注意:我不是要求您告诉我"使用显式连接",而是寻找Oracle官方立场,如果有任何关于该主题的话.

从Oracle数据库文档(也出现在9i和11g文档中):

Oracle建议您使用FROM子句OUTER JOIN语法而不是Oracle连接运算符.使用Oracle join运算符的外连接查询(+)受以下规则和限制的约束[...]

换句话说,Oracle建议更喜欢这两种形式中的第一种:

FROM a LEFT JOIN b ON b.x = a.x
vs
FROM a, b WHERE b.x(+) = a.x
Run Code Online (Sandbox Code Playgroud)

但是,我从来没有在任何Oracle文档中找到一个建议,最好使用这两种形式之一:

FROM a INNER JOIN b ON b.x = a.x
vs
FROM a, b WHERE b.x = a.x
Run Code Online (Sandbox Code Playgroud)

我错过了一段吗?

oracle join

16
推荐指数
2
解决办法
5034
查看次数

AFX_MANAGE_STATE(AfxGetStaticModuleState())完全做了什么

我已经使用了很多模态对话框,并且它们在没有使用的情况下工作正常AFX_MANAGE_STATE,但是最近我正在开发一个不同的项目,其中资源dll与启动dll不同.我浏览网页并找到上面的行,当我在启动对话框之前插入它时,它工作正常.我想也许因为我们有不同的dll,我们需要加载主dll的状态才能启动对话框,但我不确定.我无法在互联网上的任何地方找到一个好的解释.任何人都可以用简单的语言AFX_MANAGE_STATE解释我突然不得不使用它的原因和原因.

谢谢.

c++ mfc

16
推荐指数
2
解决办法
2万
查看次数