powershell - 通过 Powershell 循环命令
问题描述
我最近不得不从 Linux UI 更改为 Windows,以便为我的科学工作运行一些分析。
我在 Linux 上运行一个名为 Blast 的程序,我用它一次运行多个文件。
我在 Linux 上使用的命令是这样的:
对于 *.log 中的 f;做 blastn -query $f -db dbname -out $f.out -outfmt 6 -evalue 0.000001 &done
之后,程序将获取所有带有 *.log 的文件,运行命令,然后创建名为 *.out 的输出文件
但是,我对如何将其转换为 Powershell 命令一无所知。
我目前正在一一运行它,但我有数百个文件。
这是 Powershell 中的基本命令。
blastn.exe -query .\filename_log -db ..\dbname -out filename.out -outfmt 6 -evalue 0.00001
我正在考虑以下内容,但它不起作用,因为我仍然不确定如何让它做某事。=____=
Get-ChildItem "C:\pathway\Genomes\" -Filter *.log | Foreach 对象 { $content = 获取内容 $_.FullName
$content | Where-Object {$_ -do blastn.exe -query .\filename_log -db ..\dbname -out filename.out -outfmt 6 -evalue 0.00001'} | Set-Content ($_.BaseName + '.out') }
如果无法创建这样的命令,是否可以为此创建脚本?
解决方案
尝试这个 :
$FileList = Get-ChildItem "C:\\pathway\\Genomes\\" -Filter "*.log" # GETTING THE LIST OF .LOG FILES
$FileList | %{ # FOR EACH LOOP ON ALL .LOG FILE
blastn.exe -query .\filename_log -db ..\dbname -out filename.out -outfmt 6 -evalue 0.00001 | Set-Content $_.BaseName.out
# YOUR COMMAND | SET-CONTENT FILENAME # TO SAVE COMMAND OUTPUT IN FILE
# $_ IS FOR LOOP VARIABLE AND BASENAME IS FILENAME WITHOUT EXTENSION
}
推荐阅读
- php - php使用不同的表单从另一个表单获取数据
- elasticsearch - Elasticsearch 搜索请求仅限于某些服务器 IP
- ios - 检测应用程序何时在后台状态iOS中被用户杀死
- nginx - 使用 nginx ssl 直通的反向代理
- django - 在 django 中为主键添加前缀
- android - 如何将 Android 文件系统从设备复制到我的 PC?
- mysql - 我如何以一种可以接受的方式为 sql 编写“?%”?
- shell - 如何减慢拖尾日志
- python-3.x - 如何根据 Apache NiFi 中的属性值执行脚本(比如 python 或 java 等)
- c# - “/”应用程序中的服务器错误。指定的转换无效