arrays - Powershell:有没有一种方法可以将数组中的变量作为字符串添加到文件中?

标签 arrays powershell lua

我正在尝试在.lua文件中填充由“数据”文件夹中的文件名组成的变量(这些文件的数量可能会有所不同)。例如,我具有以下文件夹结构:

Object
  data
    file1.meta
    file2.meta
  stream
  *.lua file

我写了以下文件,将对象从数据文件夹中取出:
$Path = Get-ChildItem -Path 'C:\object\data\' -Name '*.meta' -File
$Path.ForEach([string])

哪个很棒。我得到的结果恰好是数组中的项目。我想使用这些数组项来“填充空白”作为单独的变量来创建.lua文件,该文件如下所示:
files 
{
    'data/file1.meta',
    'data/file2.meta',
}

data_file 'METADATA_FILE1' 'data/file1.meta'
data_file 'METADATA_FILE2' 'data/file2.meta'

我可以使用$ Path [0]和$ Path [1]等对它进行硬编码,但是我可能要添加更多/更少的文件,并且每次都需要数据文件夹包含的确切编号...我正在努力的是运行一个正确的foreach循环次数,并将数组项用作.lua文件中的输出。

最佳答案

使用您可以用作模板的文件结构创建多行字符串:

$luaFileTemplate = @'
files 
{{
{0}
}}

{1}
'@

现在,您可以使用.ForEach()-join根据文件名创建内容:
$fileLines = $Path.ForEach({"    'data/$_',"}) -join [Environment]::Newline
$dataFileCount = 1
$dataFileLines = $files = $Path.ForEach({"data_file 'METADATA_FILE$(($dataFileCount++))' 'data/$_'"}) -join [Environment]::Newline

然后,最后使用-f运算符将值应用于模板字符串,并将其写入磁盘:
$luaFileContents = $luaFileTemplate -f $fileLines,$dataFileLines
$luaFileContents |Set-Content final_file.lua 

关于arrays - Powershell:有没有一种方法可以将数组中的变量作为字符串添加到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59647246/

相关文章:

用于二维文本数组上的类似矩阵转换的 JavaScript 库?

powershell - 转义可能包含需要转义的字符的整个字符串变量

c - 如何从 C 函数返回一个多维表到 lua?

php - 如何使用计算值对数组进行排序,其中其余数据是从 mysql 数据库接收的?

python - (P, Q) 和 (R,) 之间的曼哈顿距离

java - 在Java中不使用循环将char数组转换为int数组?

c++ - 如何在 Windows 上构建 LuaPlus

windows - 从 powershell 调用 rmdir node_modules/S/Q

powershell - Docker-无法使用Powershell运行ASP.NET Core API,但可以在Visual Studio中运行

Lua:以不区分大小写的方式合并2个字符串集合