相关疑难解决方法(0)

如何使用bat脚本将命令表达式的结果存储在变量中?

我有下面的命令来计算遵循该模式的所有目录20??????:

'dir /b "20??????" | find /c "2"'
Run Code Online (Sandbox Code Playgroud)

例如,如果我有以下目录,该命令将返回6:

20090901
20090902
20090903
20090904
20090905
20090906
Run Code Online (Sandbox Code Playgroud)

如何在变量中存储此命令的结果(前面提到的示例中的6)?

batch-file

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

使用Windows批处理文件在文本文件中添加新行

我有一个文本文件,其中有超过200行,我只想在第4行之前添加一个新行.我正在使用Windows XP.

输入前的示例文本文件:

header 1
header 2
header 3
details 1
details 2
Run Code Online (Sandbox Code Playgroud)

输出后:

header 1
header 2
header 3
<----- This is new line ---->
details 1
details 2
Run Code Online (Sandbox Code Playgroud)

windows newline stdout batch-file

21
推荐指数
1
解决办法
9万
查看次数

CMake:如何在参数中用双引号调用execute_process?aka使用来自CMake的查找来计数与字符串匹配的行

我会想调用命令find从内execute_process

find命令的格式为:

find [/v] [/c] [/n] [/i] [/off[line]] "<String>" [[<Drive>:][<Path>]<FileName>[...]]
Run Code Online (Sandbox Code Playgroud)

因此,字符串必须用双引号引起来。但是,如果在cmake中,我会这样做:

execute_process(COMMAND <firstCommandPipingSomethingToFind> 
                COMMAND find "<myString>" /c
                OUTPUT_VARIABLE MY_COUNT
                OUTPUT_STRIP_TRAILING_WHITESPACE)
Run Code Online (Sandbox Code Playgroud)

我得到一个错误FIND: Parameter format not correct
如果我使用双引号转义\,则会出现错误Access denied - \
同样,使用双转义\\或双双引号""也无济于事。

所以我的问题是:
有没有办法在调用时转义双引号execute_processfind正确接收其参数?

我可以使用findstr,不需要双引号;但是它不提供计数功能。我可以find通过致电使用find /v /c "",但同样,我需要双引号!我想计算cmake以外的输出行,并将结果直接存储在MY_COUNT变量中。

注意:我正在使用CMake 3.4.1


要重现该问题,您可以使用以下代码,其中的代码cmake -E echo用于将字符串提供给findstrfind

#This works
execute_process(COMMAND ${CMAKE_COMMAND} …
Run Code Online (Sandbox Code Playgroud)

windows cmake find findstr

6
推荐指数
1
解决办法
1806
查看次数

find /C "A" 结果为 "find: 'A': No such file or directory"

我正在尝试按照此处的答案计算文件中的行数,例如 using find /C,但我在控制台中看到的只是:

find: '/C': No such file or directory
find: 'A': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我有一个简单的“TEST.txt”文件,其中包含三个 As 和三个 B,都在新行中:

$ type TEST.txt
A
A
A
B
B
B
Run Code Online (Sandbox Code Playgroud)

findstr 似乎工作,但它不能返回计数:

$ type TEST.txt | findstr "A" 
A                             
A                             
A   
Run Code Online (Sandbox Code Playgroud)

查找不起作用:

$ type TEST.txt | find "A"
find: 'A': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

PS:1中的整个示例也不起作用:

$ findstr /R /N "^" TEST.txt | find /C ":"
find: '/C': No such file or directory …
Run Code Online (Sandbox Code Playgroud)

windows cmd findstr

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

用fread计算行而不读取整个文件

我想使用data.table处理一个很大的文件。它不适合内存。我曾考虑过使用循环(正确增加skip参数)读取大块文件。

fread("myfile.csv", skip=loopindex, nrows=chunksize) 
Run Code Online (Sandbox Code Playgroud)

处理每个这些块,并用fwrite附加结果输出。

为了正确执行此操作,我需要知道行的总数,而无需读取整个文件。

什么是正确/更快的方法?

我只能考虑仅阅读第一列,但也许有一个特殊的命令或技巧。或者也许有一种自动的方法来检测文件的结尾。

size row r file data.table

0
推荐指数
1
解决办法
2280
查看次数

标签 统计

windows ×3

batch-file ×2

findstr ×2

cmake ×1

cmd ×1

data.table ×1

file ×1

find ×1

newline ×1

r ×1

row ×1

size ×1

stdout ×1